Python spider Scrapy 中间件 获取新闻

Posted Adorable_Rocy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python spider Scrapy 中间件 获取新闻相关的知识,希望对你有一定的参考价值。

前言:Scrapy因为请求到的都是静态的数据,动态数据无法获取,拿应该怎么解决呢?

1.获取新闻的第一步

解析静态网址


根据抓包可以查看是否是静态数据,根据固定的数据进行解析

2.使用selenium+中间件完成动态数据的解析

提示:chromedriver.exe文件需要到官网中查看对应的浏览器版本进行操作

# 在spider文件中
# 开启浏览器
 def __init__(self):
        self.bro = webdriver.Chrome(executable_path='D:\\PY\\chromedriver.exe')
# 在结束的时候关闭浏览器
 def closed(self, spider):
        self.bro.quit()
  • 结合 middlewares.py,对于数据返回值进行拦截:
   # 4.通过中间件完成动态数据的获取
    def process_response(self, request, response, spider):
        bro = spider.bro
        # modules_url 是spider文件中添加的新闻网页数据,如果请求来自其中,则进行拦截返回客户端动态数据
        if request.url in spider.modules_url:
            bro.get(request.url)
            # 动态数据返回
            page_text = bro.page_source
            n_response = htmlResponse(url=request.url, body=page_text, encoding='utf-8', request=request)
            return n_response
        else:
            return response

3.获取详情数据之后,开启管道持久化数据

 fp = None

    def open_spider(self, spider):
        print("开始爬虫")
        # 需要使用全局变量赋值
        self.fp = open('./news163item.txt', 'w', encoding='utf-8')

    def process_item(self, item, spider):
        # 3. 解析管道数据
        title = item['title']
        content = item['content']

        content = title + "\\n" + content
        self.fp.write(content)
        # 4.开启管道
        return item

    def close_spider(self, spider):
        print("结束爬虫")
        self.fp.close()
  • 配置文件settings中都需要开启:
DOWNLOADER_MIDDLEWARES = 
   'News163Item.middlewares.News163ItemDownloaderMiddleware': 543,


ITEM_PIPELINES = 
   'News163Item.pipelines.News163ItemPipeline': 300,


USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36'

ROBOTSTXT_OBEY = False

LOG_LEVEL = 'ERROR'

最终获取结果

以上是关于Python spider Scrapy 中间件 获取新闻的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫编程思想(159):Scrapy中的爬虫中间件

Python爬虫编程思想(159):Scrapy中的爬虫中间件

Python爬虫编程思想(159):Scrapy中的爬虫中间件

scrapy-下载中间件

scrapy之 Spider Middleware(爬虫中间件)

Scrapy入门到放弃06:Spider中间件