XZ_Python之使用关键词抓取京东搜索页面数据

首先在京东的页面,搜索任意想买的东西,我搜索的是“裤子”,在火狐浏览器当前页面中,右键-查看页面元素,找到商品的部分代码,想要抓取的部分数据如下:

点击左侧框选部分,然后,鼠标移动到底下的代码,就可以快速定位到商品的位置,或者鼠标移动到商品,定位代码的位置。

从网页数据中,抓取到 class 为 gl-item 的列表,拿到里面的链接、价格、标题和商品id,并以json的格式存放数据,

Python3的代码实现:

import urllib
import json
from urllib import parse,request
from bs4 import BeautifulSoup

# 根据页数和keywords采集内容
def get_content_from_keyword(keyword,page=1):
    # keyword_encode = parse.quote(keyword)  # unquote 解码
    # url = "https://search.jd.com/s_new.php?keyword=%s&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%s&page=%d&s=51&click=0"%(keyword_encode,keyword_encode,page)
    # r = request.urlopen(url)
    params = {'keyword':keyword,'page':page,'enc':'utf-8','area':1,'wq':keyword}
    data = parse.urlencode(params)
    opener = request.urlopen("https://search.jd.com/Search?"+data)
    content = opener.read()
    opener.close()
    return content # .decode('utf-8')

# 分析数据,生成字典 res
if __name__ == '__main__':
    keyword = '裤子'
    content = get_content_from_keyword(keyword,3)
    soup = BeautifulSoup(content,"html.parser")
    goods_info = soup.select(".gl-item")

    res = []
    for good_info in goods_info:
        data = {}
        good_info_dict = good_info.select(".p-name.p-name-type-2 a")[0].attrs
        data['data_sku'] = good_info.attrs['data-sku']
        data['title'] = good_info_dict['title']
        data['href'] = good_info_dict['href']
        data['price'] = good_info.select('.p-price')[0].text.strip()
        res.append(data)
    print("\n\n\n商品信息:\n\n\n",goods_info,"\n\n\n格式化数据:",json.dumps(res,sort_keys=True, indent=2))

抓取结果为:


如果我们想获得页面的请求网址,点击“Network”一栏,如下图:

从上图中,可以清楚地查看到请求的URL和请求的方式(GET/POST),其中Status为200的表示请求成功,Status为304的表示有缓存,不需要重新发送所请求的资源。

猜你喜欢

转载自blog.csdn.net/understand_XZ/article/details/80063285