python爬取京东商品列表,不能爬完整

发布于 2022-09-05 19:47:40 字数 1016 浏览 14 评论 0

利用requests和bs4爬京东某个关键词下面的商品列表,一页有60个宝贝,只能爬取30个,还有30个我用抓包发现是在XHR下面,是通过ajax加载的,怎么抓ajax加载的宝贝?
求助segmentfault的大神们
附上代码:

# 导入模块
import requests
from bs4 import BeautifulSoup

def page_url(url):
    for i in range(1, 3):
        if (i % 2) == 1:
            message(url.format(i))

def message(url):
    res = requests.get(url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    n = 0
    for news in soup.select('.gl-i-wrap'):
        title = news.select('.p-name')[0].text.strip()
        price = news.select('.p-price')[0].text.strip()
        commit = news.select('.p-commit')[0].text.strip()
        urls = r'http://' + news.select('.p-img')[0].contents[1]['href']
        n += 1
        print("%d、 \n 名称:%s \n 价格:%s \n 评价:%s \n 链接:%s" %  (n, title, price, commit, urls))

url = 'https://search.jd.com/Search?keyword=%E5%8D%81%E5%AD%97%E7%BB%A3&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&page={}&s=57&click=0'

page_url(url)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绅士风度i 2022-09-12 19:47:40

浏览器模拟(selenium 、phantomjs这类),但速度慢。直接请求接口快。

今天小雨转甜 2022-09-12 19:47:40

我最近写了一个node爬虫,但是我不懂python,给你分享一下我的方法

我爬的是某个直播网站的一个列表,都是通过ajax获取的

他的ajax是发送到directory/all目录下 其参数有两个page:3 isAjax:1 也就是说不断的递增page的值就能获取到不同的列表

所以我的办法就是用循环生成一个URL列表,然后开始获取

 let   targetUrl = "https://www.douyu.com/directory/all";

for (let i = 1; i <= pagenum; i++){
    pageUrls.push(`${targetUrl}?page=${i}&isAjax=1`)
}

他的返回是一个不完全的HTML

也许能帮到你

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文