介绍
scrapy利用硒实现爬取豆瓣阅读的方法教程?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<强>首先创建scrapy项目强>
命令:<代码> scrapy startproject douban_read 代码>
创建蜘蛛
命令:<代码> scrapy genspider douban_spider url 代码>
网址:https://read.douban.com/charts
关键注释代码中有,若有不足,请多指教
<强> scrapy项目目录结构如下
强>
<强> douban_spider。py文件代码强>
爬虫文件
进口scrapy 进口稀土,json 从. .项目导入DoubanReadItem 类DoubanSpiderSpider (scrapy.Spider): name=& # 39; douban_spider& # 39; # allowed_domains=[& # 39; www # 39;】 start_urls=[& # 39; https://read.douban.com/charts& # 39;] def解析(自我,反应): #打印(response.text) #获取图书分类的url type_urls=response.xpath (& # 39;//div [@class=皉ankings-nav"]/[位置()在1]/@href& # 39;) .extract () #打印(type_urls) 在type_urls type_url: #/charts& # 63;类型=unfinished_column&指数=featured& dc=charts& dcm=charts-nav part_param=re.search(" # 39;图表\,# 63;(。*和# 63;)及dcs # 39;, type_url) .group (1) # https://read.douban.com/j/index//charts& # 63;类型=intermediate_finalized&指数=science_fiction& verbose=1 ajax_url=& # 39; https://read.douban.com/j/index//charts& # 63; {}, verbose=1 & # 39; .format (part_param) 收益率scrapy。请求(ajax_url调=自我。parse_ajax编码=& # 39;utf - 8 # 39;元={& # 39;request_type& # 39;: & # 39; ajax # 39;}) def parse_ajax(自我,反应): #打印(response.text) #获取分类中图书的json数据 json_data=https://www.yisu.com/zixun/json.loads (response.text) 数据在json_data(“列表”): 项=DoubanReadItem () 项[' book_id ']=数据(“作品”)(“id”) 项[' book_url ']=数据(“作品”)(“url”) 项[' book_title ']=数据(“作品”)(“标题”) 项[' book_author ']=数据(“作品”)(“作者”) 项[' book_cover_image ']=数据(“作品”)(“盖”) 项[' book_abstract ']=数据(“作品”)(“文摘”) 项[' book_wordCount ']=数据(“作品”)(“wordCount”) 项[' book_kinds ']=数据(“作品”)(“类型”) #把项目收益率给Itempipeline 收益项
<强>项目。py文件代码强>
项目的目标文件
# Define报废物品的模型 # #看文档: # https://docs.scrapy.org/en/latest/topics/items.html 进口scrapy 类DoubanReadItem (scrapy.Item): #这里定义的字段项: book_id=scrapy.Field () book_url=scrapy.Field () book_title=scrapy.Field () book_author=scrapy.Field () book_cover_image=scrapy.Field () book_abstract=scrapy.Field () book_wordCount=scrapy.Field () book_kinds=scrapy.Field ()
<强> my_download_middle。py文件代码强>
所请求都有会经过下载中间件,可以通过定制中间件,来完成设置代理,动态设置请求头,自定义下载等操作
进口随机 导入的时间 从硒进口webdriver 从selenium.webdriver.common.desired_capabilities进口DesiredCapabilities 从scrapy.http.response。html进口HtmlResponse 类MymiddleWares(对象): def __init__(自我): #请求头列表 自我。USER_AGENT_LIST=[ “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.1 (KHTML,像壁虎)Chrome/22.0.1207.1 Safari 537.1“, “Mozilla/5.0 (X11;横i686 2268.111.0) AppleWebKit/536.11 (KHTML,像壁虎)Chrome/20.0.1132.57 Safari 536.11“, “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.6 (KHTML,像壁虎)Chrome/20.0.1092.0 Safari 536.6“, “Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML,像壁虎)Chrome/20.0.1090.0 Safari 536.6“, “Mozilla/5.0 (Windows NT 6.2;WOW64) AppleWebKit/537.1 (KHTML,像壁虎)Chrome/19.77.34.5 Safari 537.1“, “Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/536.5 (KHTML,像壁虎)Chrome/19.0.1084.9 Safari 536.5“, “Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML,像壁虎)Chrome/19.0.1084.36 Safari 536.5“, “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1063.0 Safari 536.3“, “Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1063.0 Safari 536.3“, “Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 5.1;三叉戟/4.0;SE 2。X MetaSr 1.0;SE 2。X MetaSr 1.0;net CLR 2.0.50727;SE 2。X MetaSr 1.0)“, “Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1062.0 Safari 536.3“, “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1062.0 Safari 536.3“, “Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 5.1;360 se)“, “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1061.1 Safari 536.3“, “Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1061.1 Safari 536.3“, “Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1061.0 Safari 536.3“, “Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/535.24 (KHTML,像壁虎)Chrome/19.0.1055.1 Safari 535.24“, 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 nullscrapy利用硒实现爬取豆瓣阅读的方法教程