第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—
编写spiders爬虫文件循环抓取内容
Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数,
参数:
url=‘url‘
callback=页面处理函数
使用时需要yield Request()
parse.urljoin()方法,是urllib库下的方法,是自动url拼接,如果第二个参数的url地址是相对路径会自动与第一个参数拼接
#
-*- coding: utf-8 -*-
import
scrapy
from scrapy.http import Request
#
导入url返回给下载器的方法
from urllib import parse
#
导入urllib库里的parse模块
class
PachSpider(scrapy.Spider):
name = ‘pach‘
allowed_domains = [‘blog.jobbole.com‘] #起始域名
start_urls = [‘http://blog.jobbole.com/all-posts/‘] #起始urldef parse(self, response):
"""
获取列表页的文章url地址,交给下载器
"""#获取当前页文章url
lb_url = response.xpath(‘//a[@class="archive-title"]/@href‘).extract() #获取文章列表urlfor i in lb_url:
# print(parse.urljoin(response.url,i)) #urllib库里的parse模块的urljoin()方法,是自动url拼接,如果第二个参数的url地址是相对路径会自动与第一个参数拼接yield Request(url=parse.urljoin(response.url, i), callback=self.parse_wzhang)#将循环到的文章url添加给下载器,下载后交给parse_wzhang回调函数#获取下一页列表url,交给下载器,返回给parse函数循环
x_lb_url = response.xpath(‘//a[@class="next page-numbers"]/@href‘).extract() #获取下一页文章列表urlif x_lb_url:
yield Request(url=parse.urljoin(response.url, x_lb_url[0]), callback=self.parse)#获取到下一页url返回给下载器,回调给parse函数循环进行def parse_wzhang(self,response):
title = response.xpath(‘//div[@class="entry-header"]/h1/text()‘).extract() #获取文章标题print(title)
原文:http://www.cnblogs.com/adc8868/p/7286409.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!