现在的位置:主页 > 综合新闻 >

[python]详解Scrapy框架爬取分页资料的实用技巧--第(2)

来源:中国实用医药 【在线投稿】 栏目:综合新闻 时间:2021-03-09 05:15

【作者】:网站采编

【关键词】:

【摘要】类InsideSpider (scrapy 。蜘蛛): 名称= “内部” allowed_domains = [ '' ] start_urls = [ ' ] def parse (self ,response ): 产量从自我。刮(回应)#爬取网页内容 #定位「下一页」

类InsideSpider (scrapy 。蜘蛛):名称= “内部”allowed_domains = [ '' ]start_urls = [ ' ]def parse (self ,response ):产量从自我。刮(回应)#爬取网页内容#定位「下一页」按钮元素next_page_url =响应。xpath (“ // a [@ class ='pagination_item pagination_item-next'] / @ href” )def scrape (self ,response ):#爬取文章标题post_titles =响应。xpath (“ // h3 [@ class ='post_title'] / a [@ class ='js-auto_break_title'] / text()”)。getall ()#爬取发布日期post_dates =响应。xpath (“ // li [@ class ='post_date'] / span / text()”)。getall ()#爬取作者post_authors =回应。xpath (“ // span [@ class ='post_author'] / a / text()”)。getall ()对于数据在拉链(post_titles ,post_dates ,post_authors ):NewsScraperItem = {“ post_title” :数据[ 0 ],“ post_date” :数据[ 1 ],“ post_author” :数据[ 2 ]}产生NewsScraperItem

三,Scrapy爬取多页的网页内容

在定位到INSIDE硬塞的网路趋势观察网站-AI新闻的「下一页」按钮后,接下来就要判断这个按钮是否存在,如果存在的话代表随后还有分页,需要继续往下爬取,反之,则停止,如下范例第1721行:

进口沙皮 刮y的类InsideSpider (scrapy 。蜘蛛):名称= “内部”allowed_domains = [ '' ]start_urls = [ ' ]def parse (self ,response ):产量从自我。刮(回应)#爬取网页内容#定位「下一页」按钮元素next_page_url =响应。xpath (“ // a [@ class ='pagination_item pagination_item-next'] / @ href” )如果next_page_url :url = next_page_url 。get ()#取得下一页的网址产量沙哑。请求(URL ,回调=自我。解析)#发送请求def scrape (self ,response ):#爬取文章标题post_titles =响应。xpath (“ // h3 [@ class ='post_title'] / a [@ class ='js-auto_break_title'] / text()”)。getall ()#爬取发布日期post_dates =响应。xpath (“ // li [@ class ='post_date'] / span / text()”)。getall ()#爬取作者post_authors =回应。xpath (“ // span [@ class ='post_author'] / a / text()”)。getall ()对于数据在拉链(post_titles ,post_dates ,post_authors ):NewsScraperItem = {“ post_title” :数据[ 0 ],“ post_date” :数据[ 1 ],“ post_author” :数据[ 2 ]}产生NewsScraperItem

其中,第21行的callback关键字参数(关键字参数)代表的意思,就是在Scrapy网页爬虫请求下一页的网址后,再重新执行parse()方法(方法),也就会获得下一页的响应结果(响应),爬取网页内容(第11行),并定位“下一页”按钮,判断如果存在的话,代表还有下一页,则获得下一页的网址,发送请求,此类类推,直到没有下一页为止。

以上就是将INSIDE硬塞的网路趋势观察网站-AI新闻的所有分页资料爬取下来的实作方法。当然,有时候并不想爬取那么多的资料,可能只需要特定页数的内容,来说前3页,该如何在Scrapy网页爬虫框架中实现呢?

这时候,就需要定义一个类别属性(Class Attribute),来计算当前执行的次数,如下范例第8行:

进口沙皮 刮y的类InsideSpider (scrapy 。蜘蛛):名称= “内部”allowed_domains = [ '' ]start_urls = [ ' ]count = 1 #执行次数

文章来源:《中国实用医药》 网址: http://www.zgsyyyzzs.cn/zonghexinwen/2021/0309/911.html

上一篇:超实用!如何选购质量好又舒适的皮鞋?请看这
下一篇:13万如何抉择?现代名图与大众朗逸 谁更实用谁