介绍
这期内容当中小编将会给大家带来有关如何在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爬虫库