使用scrapy爬取阳光热线问政平台

目的:爬取阳光热线问政平台问题反映每个帖子里面的标题、内容、编号和帖子url

CrawlSpider版流程如下:

  1. 创建爬虫项目dongguang

    scrapy startproject dongguang
    
  2. 设置items.py文件

    
    # -*- coding: utf-8 -*-
    
    import scrapy
    
    
    class NewdongguanItem(scrapy.Item):
    
        # 每页的帖子链接
        url = scrapy.Field()
        # 帖子标题
        title = scrapy.Field()
        # 帖子编号
        number = scrapy.Field()
        # 帖子内容
        content = scrapy.Field()
    
  3. 在spiders目录里面,创建并编写爬虫文件sun.py

    
    # -*- coding: utf-8 -*-
    
    import scrapy
    from scrapy.linkextractors import LinkExtractor
    from scrapy.spiders import CrawlSpider, Rule
    from dongguan.items import DongguanItem
    
    
    class SunSpider(CrawlSpider):
        name = 'dg'
        allowed_domains = ['wz.sun0769.com']
        start_urls = ['http://wz.sun0769.com/html/top/report.shtml']
    
    
        # rules是Rule的集合,每个rule规则同时执行。另外,如果发现web服务器有反爬虫机制如返回一个假的url,则可以使用Rule里面的参数process_links调用一个自编函数来处理url后返回一个真的url
        rules = (
            # 每个url都有一个独一无二的指纹,每个爬虫项目都有一个去重队列
            # Rule里面没有回调函数,则默认对匹配的链接要跟进,就是对匹配的链接在进行请求获取响应后对响应里面匹配的链接继续跟进,只不过没有回调函数对响应数据进行处理
            # Rule(LinkExtractor(allow="page="))如果设置为follow=False,则不会跟进,只显示当前页面匹配的链接。如设置为follow=True,则会对每个匹配的链接发送请求获取响应进而从每个响应里面再次匹配跟进,直至没有。python递归深度默认为不超过1000,否则会报异常
            Rule(LinkExtractor(allow="page=")),
    
            Rule(LinkExtractor(allow='http://wz.sun0769.com/html/question/\d+/\d+.shtml'),callback='parse_item')
    
        )
    
        def parse_item(self, response):
            print(response.url)
            item = 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值