如何在python中使用scrapy爬虫库

  介绍

这期内容当中小编将会给大家带来有关如何在python中使用scrapy爬虫库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

首先我们得安装scrapy框架

pip  install  scrapy

接着使用scrapy命令创建一个爬虫项目:

scrapy  startproject 问题

相关文件简介:

scrapy。cfg:项目的配置文件/

问题:该项目的python模块,之后您将在此加入代码。

问题/项目。py:项目中项目的文件。

/管道的问题。py:项目中管道的文件。

问题/设置。py:项目的设置文件。

/蜘蛛/的问题:放置蜘蛛代码的目录。

/蜘蛛/xueersi问题。py:实现爬虫的主体代码。

xueersi.py 爬虫主体

#, - *安康;编码:utf-8  - * -   import  scrapy   import 时间   import  numpy   import 再保险   得到questions.items  import  QuestionsItem   class  xueersiSpider (scrapy.Spider):   name =,才能“xueersi", #,爬虫名字   allowed_domains 才能=,(“tiku.xueersi.com"), #,目标的域名   #,爬取的目标地址   start_urls 才能=,(   ,,,“http://tiku.xueersi.com/shiti/list_1_1_0_0_4_0_1"   ,,,“http://tiku.xueersi.com/shiti/list_1_2_0_0_4_0_1"   ,,,“http://tiku.xueersi.com/shiti/list_1_3_0_0_4_0_1"   ,,)   levels 才能=,(& # 39;偏易& # 39;,& # 39;中档& # 39;,& # 39;偏难& # 39;】   subjects 才能=,(& # 39;英语& # 39;,& # 39;语文& # 39;,& # 39;数学& # 39;】   ,#爬虫开始的时候,自动调用该方法,如果该方法不存在会自动调用解析方法   #,才能def  start_requests(自我):   #才能,,,油品收率scrapy.Request (& # 39; http://tiku.xueersi.com/shiti/list_1_2_0_0_4_0_39& # 39;,回调=self.getquestion)   #,start_requests方法不存在时,解析方法自动被调用   def 才能解析(自我,,反应):   #,xpath的选择器语法不多介绍,可以直接查看官方文档   ,,,arr =, response.xpath (“//ul (@class=& # 39;分页# 39;]/李//text ()“) .extract ()   ,,,total_page =, arr [3]   #,获取分页   ,,,for  index 拷贝范围(int (total_page)):   ,,,,,油品收率scrapy.Request (response.url.replace (& # 39; _0_0_4_0_1& # 39;,“_0_0_4_0_" + str(索引),回调=self.getquestion), #,发出新的请求,获取每个分页所有题目   #,才能获取题目   def 才能getquestion(自我,反应):   ,,,for  res 拷贝response.xpath (& # 39;//div [@class=癿ain-wrap"]/ul (@class=癷tems")/李# 39;):   ,,,,,item =, QuestionsItem(), #,实例化项目类   ,,,,,#,获取问题   ,,,,,questions =, res.xpath (& # 39;。/div [@class=癱ontent-area"] & # 39;) .re (" # 39; & lt; div 类=癱ontent-area"祝辞? ([\ s \ s] +) & lt;(表| \/td div | | br) & # 39;)   ,,,,,if  len(问题):   ,,,,,,,#,获取题目   ,,,,,,,question [0]=,问题.strip ()   ,,,,,,,项目[& # 39;源# 39;],=,问题   ,,,,,,,dr =, re.compile (" # 39; & lt;[^祝辞]+祝辞& # 39;,re.S)   ,,,,,,,question =, dr.sub(& # 39; & # 39;提问)   ,,,,,,,content =, res.extract ()   ,,,,,,,项目[& # 39;内容# 39;],=,问题   ,,,,,,,#,获取课目   ,,,,,,,subject =, re.findall (ur # 39; http: \ \/tiku \ .xueersi \ com \/shiti \/list_1_ (\ d +) & # 39;, response.url)   ,,,,,,,项目[& # 39;主题# 39;],=,self.subjects (int(主题[0])1)   ,,,,,,,#,获取难度等级   ,,,,,,,levels =, res.xpath (& # 39;//div [@class=癷nfo"] & # 39;) .re (ur # 39;难度:([\ s \ s] +) & lt; & # 39;)   ,,,,,,,项目[& # 39;水平# 39;],=,self.levels.index(水平[0])+ 1   ,,,,,,,   ,,,,,,,#,获取选项   ,,,,,,,options =, re.findall (ur # 39;(模拟)\ [. .]([\ s \ s] +) & lt; (\/td p | | \/br) & # 39;,内容)   ,,,,,,,项目[& # 39;选项# 39;],=,选项   ,,,,,,,if  len(选项):   ,,,,,,,,,url =, res.xpath (& # 39;。/div [@class=癷nfo"]//@href& # 39;) .extract () [0]   ,,,,,,,,,request =, scrapy.Request (url,回调=self.getanswer)   ,,,,,,,,,request.meta[& # 39;项目# 39;],=,item  #,缓存条目数据,传递给下一个请求   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何在python中使用scrapy爬虫库