python爬取京东商品列表,不能爬完整
利用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
浏览器模拟(selenium 、phantomjs这类),但速度慢。直接请求接口快。
我最近写了一个node爬虫,但是我不懂python,给你分享一下我的方法
我爬的是某个直播网站的一个列表,都是通过ajax获取的
他的ajax是发送到directory/all目录下 其参数有两个
page:3 isAjax:1
也就是说不断的递增page的值就能获取到不同的列表所以我的办法就是用循环生成一个URL列表,然后开始获取
他的返回是一个不完全的HTML
也许能帮到你