python爬取iphone11在售信息

爬取示例

在这里插入图片描述

一、首先分析京东网址规律

首先在京东搜索栏中输入“iphone11” 并点击查询,出来如下结果
在这里插入图片描述
然后依次复制前5页的网址,如下

# https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page=1&s=1&click=0
# https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page=3&s=56&click=0 #60
# https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page=5&s=116&click=0 #60
# https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page=7&s=176&click=0
# https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page=9&s=236&click=0

观察发现,只有最后两个数值“&page=&s=”在变化,其他都相同,这样就方便我们定义url。
继续分析,目前只有第一页没有规律,从第二页开始,参数page递增2,参数s递增60,那么我们应该分别构建两个url语句如下

urls = ['https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page=1&s=1&click=0']
 urls=['https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page={}&s={}&click=0'.format(str(i),str(j)) for i in range(3,11,2) for j in range(56,237,60)]

二、分析京东html页面容器

在京东网站点击右键,点击“检查”,如下图
在这里插入图片描述
此时打开调试窗口,如下图
在这里插入图片描述
然后寻找当前每家店铺所处的容器div,
在这里插入图片描述
在这里插入图片描述
进而找到想要爬取的字段所处的容器div
在这里插入图片描述
在这里插入图片描述

三、编写爬取页面路径和内容

    prices=soup.select('div.gl-i-wrap>div.p-price')
    ads=soup.select('div.gl-i-wrap>div.p-name')
    shops = soup.select('div.gl-i-wrap>div.p-shop')


    for price,ad,shop in zip(prices,ads,shops):
        i=i+1
        data={
            'index':i,
            'price':price.get_text().split()[0],
            'shop':shop.get_text().split(),
            'ad':ad.get_text().strip()
        }

四、完整代码

import requests
from bs4 import BeautifulSoup
import time
import sys

headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}

def get_info(url,i):
    wb_data=requests.get(url,headers=headers)
    soup=BeautifulSoup(wb_data.text,'lxml')

    prices=soup.select('div.gl-i-wrap>div.p-price')
    ads=soup.select('div.gl-i-wrap>div.p-name')
    shops = soup.select('div.gl-i-wrap>div.p-shop')


    for price,ad,shop in zip(prices,ads,shops):
        i=i+1
        data={
            'index':i,
            'price':price.get_text().split()[0],
            'shop':shop.get_text().split(),
            'ad':ad.get_text().strip()
        }
        print(data)
    return i
if __name__=='__main__':
    i = 0
    urls = ['https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page=1&s=1&click=0']
    for url in urls:
        i=get_info(url,i)

    urls=['https://search.jd.com/Search?keyword=iphone11&wq=iphone11&pvid=9c3dd3ff63fc41e2893763e521450969&page={}&s={}&click=0'.format(str(i),str(j)) for i in range(3,11,2) for j in range(56,237,60)]
    for url in urls:
        i=get_info(url,i)
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值