Scrapy爬取多层级网页内容的方式

# -*- coding: utf-8 -*-
import scrapy
from Avv.items import AvvItem

class AvSpider(scrapy.Spider):
    name = 'av' # 爬虫名
    allowed_domains = ['51porn.net/'] # 爬虫作用域

    # 爬取第2页到最后一页的代码
    url = 'http://www.51porn.net/nvyoudaquan/index_{}.html' # 起始url,并用花括号格式化
    offset = 2 # 偏移量
    start_urls = [url.format(str(offset))] # 拼接为完整url
    
    
    def parse(self, response): # 第一个parse,从中提取下一层url
     # 第一部分
        links = response.xpath("//ul[@class='clearfix']/li/a/@href").extract() # 利用xpath提取下一层的url列表,并用extract转换为字符串
        for link in links: # 遍历上个列表
            url = "http://www.51porn.net" + link # 由于提取出来的url不完整,所以需要拼接为完整的url
            yield scrapy.Request(url,callback=self.parse_s,dont_filter=True) # 请求下一层url,方法为第二个parse,dont_filter=True的作用是避免有时候新的url会被作用域过滤掉


    # 第二部分
        m_page = 26 # 这里设置的是第一层的url有多少页
        if self.offset0 else "无" # 判断此信息是否为空值
            item["c_work"] = node.xpath("./p[8]/img/@src").extract()[0]

        yield item # 返回

Scrapy爬取多层级网页内容的方式_第1张图片

原作者

https://www.cnblogs.com/shawone/p/10229261.html

你可能感兴趣的:(python,爬虫,Scrapy)