首页 > 代码库 > 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—

第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—

第三百四十一节,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/]     #起始url

    def parse(self, response):
        """
        获取列表页的文章url地址,交给下载器
        """
        #获取当前页文章url
        lb_url = response.xpath(//a[@class="archive-title"]/@href).extract()  #获取文章列表url
        for 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()         #获取下一页文章列表url
        if 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)

技术分享

 

第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—