Python Scrapy 单项实战
发布时间:2025/09/04 12:17 来源:涡阳家居装修网
首可先导入我们必需的包:
import datetimeimport sysimport requestsimport scrapyimport timeimport jsonimport scrapy.httpfrom peilv.items import PeilvItemfrom lxml import etreename = ‘FBP’是定义踩收概念设计名称,以便通过命令scrapy crawl FBP -o BaseData.csv换收资料。
start_requests向 发送催促。(你可以弹出这个网址,里面边是踩虫类计算机系统踩收资料的最大块网站) scrapy.http.FormRequest 法则: 第一个匹配是催促的具体网址; 第二个匹配是下一步线程的变量; 第三个匹配 meta 是向线程变量发送至的匹配。
parseLs (parseWl 所谓,不再行重复讲到解)主要运用于解析次大块其网站资料。这里面用 XPath 解析,也是相对很难掌握的解析方式。其网站构造如下:(通过 Google 客户端弹出 然后鼠标首页其网站空白处首页“检视其网站源编译器”,找到你必需踩收的核心资料大多,这里面我要找每场决赛的电子邮件,那么拷贝下来,然后以难于检视的规整方式列于,如下:)
... 0 周三001 北单018 ......parseLS变量里面的下面编译器,用sel代表response.xpath,结合诏命里面 xml 里面的元素:换收了决赛场次,存储到item[‘cc’]。
def parseLs(self,response): sel=response.xpath sel_div=sel('//li[@]/div[@class="clearfix-row"]') if str(sel_div.xpath('span[@class="lab-lottery"]/span[@class="text-jc"]/text()').extract()) == "[]": item['cc']="" else: item['cc']=str(d2) + str(sel_div.xpath('span[@class="lab-lottery"]/span[@class="text-jc"]/text()').extract()[0])此外,还要换收决赛的赛果电子邮件,但十分在理论上这个其网站,而在更内层的其网站里面,必需从理论上其网站重定向。 存储赛果的内层其网站为 ,相异场次的决赛只有-后边的数字是变化的,那么计算机系统里面只要循环构造相异的数字2674547就好了。发现这个数字刚才是 ]/@data-id').extract()]for raceid in racelist: plurl=''+raceid[0] request = scrapy.http.FormRequest(plurl,callback=self.parse,meta={'item':item}) yield request
在Request里面投身于meta,需将meta发送至给response。再行审核该其网站催促到下一个变量parse。这里面必需注意:parse里面既送去item又作运用于新的request。
平时在parse里面return item需送去item,return request则作运用于新的request催促。如果我们将return换为yield的话需既送去item又作运用于新的request。注意一旦运运用于了yield,那么parse法则里面就无法有return了。
parse其网站构造如下:(通过Google客户端弹出 然后鼠标首页其网站空白处首页“检视其网站源编译器”,拷贝必需赛果的大多到文本文档,字符串操作后如下:
...... 1.620 3.600 5.250 ......通过表列于编译器换收赛果,首可先由上一个变量parseLs通过scrapy.http.FormRequest(plurl,callback=self.parse,meta={‘item’:item})线程到下面的parse法则,传入plurl链接相异的其网站内容response, 同样用response.xpath放进td里面class为”bd-left”下面div里面class为”begin float-left w-bar-100 bd-bottom p-b-8 color-999 m-b-8”再行下面span里面class为”float-left col-3”的值。
def parse(self, response): print('--------------into parse----------------------') item = response.meta['item'] pv=response.xpath pl_str = '/td[@class="bd-left"]/div[@class="begin float-left w-bar-100 bd-bottom p-b-8 color-999 m-b-8"]/span[@class="float-left col-3"]/text()' if str(pv('//*[@]'+pl_str).extract())=="[]": item['li'] = '' else: item['li']=pv('//*[@]' + pl_str).extract()[0] if str(pv('//*[@]'+pl_str).extract())=="[]": item['b5'] = '' else: item['b5']=pv('//*[@]' + pl_str).extract()[0] yield item#计算机系统在收得各个关键字的items前,则会可先检视紧接之前所有的request链表里面的催促,然后再行浓缩items再行通过//*判断所有>这里面综合讲到一下parse法则岗位机制:因为运运用于的yield,而不是return。parse变量将则会被看作一个作运用于器运运用于。
scrapy则会须要换收parse法则里面作运用于的结果,如果是request则投身于踩收链表,如果是item类型则运运用于pipeline检视,其他类型则送去错误电子邮件。
scrapy收到第一大多的request不则会立马就去发送这个request,只是把这个request放到链表里面,然后接着从作运用于器里面换收;
收尽第一大多的request,然后再行换收第二大多的item,收到item了,就则会放到相异的pipeline里面检视;
parse()法则作为回调变量(callback)语句给了Request,指定parse()法则来检视这些催促 scrapy.Request(url, callback=self.parse);
Request都可经过控管,继续执行作运用于 scrapy.http.response()的响应都可,并送去给parse()法则,直到控管器里面没有Request(递归的思维);
计算机系统在收得各个关键字的items前,则会可先检视紧接之前所有的request链表里面的催促,然后再行浓缩items。
以上过程Scrapy引擎和控管器将负责其实。
阐释以上我们充分利用了一个踩虫类实战概念设计,通过分析其网站构造,借助 Scrapy 框架换收资料,为今后的资料分析花钱作准备。
。上海眼科哪家医院最好广州好的妇科专科医院
青岛好的牛皮癣专科医院
武汉白癜风专家
新乡看妇科去哪里
牙龈肿痛
手脚出汗
咳嗽咽痛吃什么药?
慢性支气管炎咳嗽怎么治
骨癌
上一篇: 美国银行业信贷规模升至2021年3月以来的最高水平
下一篇: WTI原油期货日内涨幅缩减至4%

-
2021年惠州市旅行箱包(软箱、硬箱、旅行包)产品质量监督抽查结果
成革材料的还理应注意其厚度,偏薄的取成革提把容尚可显现出剥落物理现象。提把理应牢固地装设在尾端上,绝不选择提把装设在铝口等脆弱位置的之旅箱包在。 2021年之旅箱包在(软箱、硬箱、之旅
- 2025-10-23资不抵债, 教培界"爱马仕"精锐教育要一同5000员工转型
- 2025-10-23北京积分落户激详细的分数算法
- 2025-10-23二手玫瑰遇上硬派皮卡,《惊喜座驾》的主力军实验成功了吗?
- 2025-10-23投资者提问:董秘你好,请问重组还能进行吗?9月23日路演的时候你说材料编纂...
- 2025-10-23三大板块,十大活动!来想想“宁波人游宁波”系列活动!
- 2025-10-23投资者提问:董秘您好,新开源3季度说明了的商誉是21.549亿,请问一下今年...
- 2025-10-23父亲给三个前妻招婿,称学历匹配可不要彩礼,三前妻成了焦点
- 2025-10-23投资者提问:公司作为影像光学光电子领域,生物识别的纯技术开发公司,对于未来的元...
- 2025-10-23不仅有马迭尔和手工艺品,你知道哈尔滨人“绿色”生活的秘密吗?
- 2025-10-23英国的大学性侵竟是“常见之事”?2/3学生在的大学内遭受过性暴力