老师好,这段代码爬的只是单个网页的全部数据吗?我看一个网页上有60条数据,但是只爬到了30条数据,这是为什么呢?

来源:2-9 爬取京东网的数据

粒子酱

2018-07-15

写回答

2回答

NavCat

2018-07-15

同学非常细心,你的代码也没有错,结果也是正确的。原因是京东默认第一页数据时30条,后面他又异步加载了30条数据,你可以通过浏览器的F12查看详细。

//img.mukewang.com/szimg/5b4b6bcb0001034119140854.jpg

0
2
NavCat
回复
粒子酱
这个你要善于分析,找到它的数据源以及多页的数据源。其它页的数据一定是通过接口请求过来的,你看我的截图就会明白了。 再接下来就要分析接口的请求参数,一定有一个是根分页相关的参数,找到规律,这样就可以找到所有的数据了,最后爬下来就行了
2018-07-16
共2条回复

NavCat

2018-07-15

贴代码,我看看

0
1
粒子酱
import requests from lxml import html def spider(sn): url = 'https://search.jd.com/Search?keyword={0}'.format(sn) resp = requests.get(url) resp.encoding = 'utf-8' # print(resp.encoding) html_data = resp.text selector = html.fromstring(html_data) ul_list = selector.xpath('//div/ul[@class="gl-warp clearfix"]/li') # print(len(ul_list)) # ul_list = selector.xpath('//div[@id="J_goodsList"]/ul/li') # print(len(ul_list)) for li in ul_list: title = li.xpath('div/div[@class="p-name"]/a/@title') print(title[0]) link = li.xpath('div/div[@class="p-name"]/a/@href') print(link[0]) price = li.xpath('div/div[@class="p-price"]/strong/i/text()') print(price[0]) provider = li.xpath('div/div[@class="p-shopnum"]/a/@title') print(provider[0]) print('-----------------') if __name__ == '__main__': spider('9787115428028')
2018-07-15
共1条回复

手把手教你把Python应用到实际开发 不再空谈语法

学会项目开发思路,掌握Python高阶用法。

1341 学习 · 244 问题

查看课程