三天前接了一个单,是个小单子,就整个销售排行,哎嘿嘿又有东西写文章了!!
咳咳,先分析网页
一页50个排名,一个俩页
url的话换页这里也跟着变成页数
打开开发者工具,看到是get请求,然后再找到user-agent,伪装一下,因为有反爬。。
ne!开整
导入要用得到的库
import requests from lxml import etree import time import random import xlwt
请求页面
分析一下,可以看到每一个div都对应一个商品
找到需求的数据
解析数据
接着就是运行
这里主要是防止爬的速度太快的,运行之后数据都能提取出来
接着保存
global n sheet.write(n, 0, pai_han) sheet.write(n, 1, id) sheet.write(n, 2, star) n += 1
if __name__ == '__main__': book = xlwt.Workbook(encoding='utf-8') sheet = book.add_sheet('排名') n = 1 sheet.write(0,0,'排名') sheet.write(0,1,'名字') sheet.write(0,2,'星星指数') spider = YanMaSpider() spider.run() book.save(u'排名.xls')
运行结果
完整代码如下
import requests from lxml import etree import time import random import xlwt class YanMaSpider: def __init__(self): self.url = 'https://www.xxx.com/-/zh/Best-Sellers-/zgbs/fashion/11006702011/ref=encoding=UTF8&pg={}' self.headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'} def get_html(self, url): html = requests.get(url=url, headers=self.headers).text self.parse_html(html) def parse_html(self, html): p = etree.HTML(html) div_list = p.xpath('//div[@class="p13n-gridRow _cDEzb_grid-row_3Cywl"]/div') for div in div_list: pai_han = div.xpath('.//div[@class="a-section zg-bdg-body zg-bdg-clr-body aok-float-left"]/span/text()')[0].strip() id = div.xpath('.//div[@class="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1"]/text()')[0].strip() star = div.xpath('.//span[@class="a-size-small"]/text()')[0].strip() print(f'排名:{pai_han} | 名字:{id} | 星星指数:{star}') global n sheet.write(n, 0, pai_han) sheet.write(n, 1, id) sheet.write(n, 2, star) n += 1 def run(self): for i in range(1, 3): url = self.url.format(i) self.get_html(url) time.sleep(random.randint(1, 2)) if __name__ == '__main__': book = xlwt.Workbook(encoding='utf-8') sheet = book.add_sheet('排名') n = 1 sheet.write(0,0,'排名') sheet.write(0,1,'名字') sheet.write(0,2,'星星指数') spider = YanMaSpider() spider.run() book.save(u'排名.xls')
用class爬起来可方便多了。
瞅瞅价格:
本无心接单,玩玩也不错。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试