用 requests 和 bs4 爬取京东商品页面信息
来源:互联网 发布:网络推广kamilet 编辑:程序博客网 时间:2024/05/29 10:54
1、网页地址
在京东主页搜索框输入 电脑
得到的地址为
https://search.jd.com/Search?keyword=%E7%94%B5%E8%84%91&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&offset=5&wq=%E7%94%B5%E8%84%91&page=1&s=1&click=0
2、网页地址分析
点击在底部分页栏的分页按钮得到网页地址
第一页:
https://search.jd.com/Search?keyword=%E7%94%B5%E8%84%91&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&offset=5&wq=%E7%94%B5%E8%84%91&page=1&s=1&click=0
第二页:
https://search.jd.com/Search?keyword=%E7%94%B5%E8%84%91&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&offset=6&wq=%E7%94%B5%E8%84%91&page=3&s=52&click=0
第三页:
https://search.jd.com/Search?keyword=%E7%94%B5%E8%84%91&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&offset=6&wq=%E7%94%B5%E8%84%91&page=5&s=112&click=0
其中的 keyword 和 wq 就是电脑
page 是以 1, 3 ,5 奇数递增
修改网页地址中的 page 为2, 4, 6 返回网页信息跟 page为 1, 3, 5 是一样的
所以,我们将 Craw 的 url 定为 :
https://search.jd.com/Search?keyword=%E7%94%B5%E8%84%91&enc=utf-8&wq=%E7%94%B5%E8%84%91&page=3&s=30
3、代码
从网页源码中找到每个商品信息布局 li 中第一个 a 标签中的 title 属性表示商品详情以及对应下一个 div 块中的 i 标签的 string 显示商品价格
import requestsfrom bs4 import BeautifulSoup# 获取网页信息def getHtmlText(url): try: r =requests.get(url) r.raise_for_status() r.encoding = r.apparent_encoding print('success') return r.text except: print('false') return 'false'# 解析网页数据, 获取有用信息def parseHtml(goods_data, html): soup = BeautifulSoup(html, 'lxml') lis = soup.find_all('li', class_="gl-item") print(len(lis)) for i in range(len(lis)): try: # 获取商品信息 div 中的第一个 a 标签, 获取 title 属性值 title = lis[i].a['title'] # print(title) # 获取商品的价格信息 price = lis[i].find('div', class_='p-price').i.string # print(price) goods_data.append([title, price]) except: print('')# 显示数据def displayHtmlGoods(goods_data): std = r'{0:^100}{1:^8}' print(std.format('商品名称', '价格')) for i in range(len(goods_data)): print(std.format(goods_data[i][0], goods_data[i][0]))def main(): url_basic = 'https://search.jd.com/Search?keyword=' total_pages = 3 # 需要爬取的总页数 keyword = '电脑' # 关键字 goods_data = [] for i in range(total_pages): page = 1 + i * 2 url = url_basic + keyword + '&enc=utf-8&wq=' + keyword + '&page=' + str(page) print(url) html = getHtmlText(url) parseHtml(goods_data, html) displayHtmlGoods(goods_data)if __name__ == '__main__': main()
- 用 requests 和 bs4 爬取京东商品页面信息
- python:使用requests和bs4爬去豆瓣图书信息
- requests.get 和 bs4.BeautifulSoup
- 用 requests 和 bs4 爬取世界大学排名数据
- requests和bs4的python爬虫入门
- 用 requests-bs4 爬取网络图片
- requests-re-bs4 定向爬取股票信息
- 【python爬虫小实战】python3.x用requests和bs4实现有道翻译(中英文)
- Scrapy by requests & bs4
- 利用bs4和requests爬取股票历史交易数据
- python+requests+bs4 爬取暴走GIF图片
- 爬取京东商品详情页信息
- ubuntu/linux pyhton3.x 安装pip、requests、bs4 BeautifulSoup4
- ImportError: No module named 'requests',No module named bs4
- requests‐bs4路线实现中国大学排名定向爬虫
- Python网络爬虫requests、bs4爬取空姐网图片
- 学习用requests, bs4 抓取网页特定的内容
- python:使用requests,bs4爬取mmjpg上的图片
- dispatch_sync与dispatch_async
- Studio快捷键
- 安卓智能地图开发与实施六:离线基础底图
- Android Studio中 Error:Could not find method compile() for arguments
- httpfox 带你进行一次HTTP协议精神旅行
- 用 requests 和 bs4 爬取京东商品页面信息
- 网易2017春招笔试真题编程题集合(一)
- qt (c++) 之 单例模式
- Equal-area Projection(EAP)
- 五个步骤搞定敏捷UX设计
- 1089. Insert or Merge (25)
- 总结调试过程中怎么去抓log
- shuaxing
- 在ROS中开始自主机器人仿真