提取y通道 python

   日期:2024-12-27    作者:qki8c 移动:http://oml01z.riyuangf.com/mobile/quote/69813.html


提取y通道 python


文章目录

  • 说明:
  • 我的配置:
  • 目标网站:
  • 今天爬虫(手动提取url,发送get请求)
  • 1、创建项目+初始化爬虫文件:
  • 2、在setting中配置
  • 3、修改items.py:
  • 4、修改爬虫程序:spiders/scrapyd.py
  • ①、scrapy.Request()
  • ②、直接上我的代码:
  • 5、管道处理(一般都在这里进行数据清洗和数据储存操作):pipelines.py
  • 1、测试spider是什么:
  • 2、保存到MongoDB数据库:
  • 6、我刚学scrapy对itmes模块的一个疑问:
  • 1、我改为item={}
  • 2、我改为:item = ScrapydCnItem()
  • 3、对比,得出我认为的结论:


今天主要学习一下翻页的功能,手动翻页的效果,前面的基础操作这里不不再依次讲解截图说明了,如果不太懂,可以参考我的上一篇scrapy博客:

http://lab.scrapyd.cn/ 因为这个网站是get,响应的页面就能找到下一页的url,我记得之前测试翻页是用的腾讯招聘网站,但是现在腾讯招聘的页面改成异步获取的json数据了,如果真的爬取,我觉得直接使用requests模块比较方便,如果用scrapy,可以直接把开始的start_urls列表换成一个异步url列表集,我感觉使用scrapy那样爬取多此一举了。

比如这样,url列表集:

不过这样的我不写,这样的和我的第一个博客没有什么区别,只不过初始化的url列表数量多了而已。

生成文件:

这里我们只要三维数据,需要三个字段即可。

①、scrapy.Request()

这个只是和之前比这多了一个翻页功能,这个scrapy.Request()
里面有俩个必须要传递的参数,一个是url,一个是返回的函数,这里的parse是本身的方法中,继续处理数据直至页面结束,可以自己写多个方法,根据项目和网站需要定义方法,和需要的返回方法中。

其中还有几个常用的参数:


scrapy.Request()中几个常用参数解释:

②、直接上我的代码:

1、测试spider是什么:

下面是我测试的方法,之前使用过name属性进行过对不同的数据进行清洗和储存。你也可以自己研究测试。

2、保存到MongoDB数据库:

代码:

打印出的页面显示:

数据MongoDB存入成功:

不知道刚学scrapy时有没有和我一样,有这样一个疑问,爬虫程序中,我不继承items中的ScrapydCnItem类,直接用一个字典代替,其实,我的理解,如果不涉及过的爬虫数据类型保存,是一样的,但是如果涉及过多的类型数据保存,会影响数据的混乱保存。比如进入管道中的,一个程序中,我就有好几种数据分别保存到不同的数据库,这时,继承items中的dict数据进入管道pipelines.py就可以用

isinstance(item,ScrapydCnItem)

返回的是True和False,进行保存自己需要的数据类型,到对应的需求数据库中。


scrapy.Item进入源文件是继承一个dict类:


scrapy.Field() 进入源文件也是继承一个dict

爬虫文件中,我测试发现定义一个字典返回的管道数据中储存,结果和定义的items的类ScrapydCnItem最后进入管道的结果是一样的,但是类型不一样,最后我找到一个可以理解这定义这个items中ScrapydCnItem类dict的原因:

1、我改为item={}

爬虫spider/scrapyd.py中,改为item = {}:


pipelines.py中打印到处item类型,和print(“isinstance”,isinstance(item,ScrapydCnItem))

其中这个ScrapydCnItem类,是items.py中的目标数据字段的类。
from scrapyd_cn.items import ScrapydCnItem


上面的打印结果:

2、我改为:item = ScrapydCnItem()

爬虫spider/scrapyd.py中

pipelines.py中,用来打印出我的疑问


打印出管道中的结果:

3、对比,得出我认为的结论:

通过上面俩个打印出的结论,我也就自己给出了我的疑问答案,那就是,items的文件,在爬虫程序中继承过来的字段类型,看着是字典,但是可以根据这个进行不同的数据类型(根据继续的items中的类来体现),根据isinstance(item,ScrapydCnItem),ScrapydCnItem要改为你实际需求的数据类名,进行不同数据类型分开保存。

这也就是我自己对这个items中的定义目标数据字段的理解。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号