Loading

scrapy-splash解析javascript

所有代码均在ubuntu16.04,python3下通过

1、不使用scrapy-splash#


比如我想爬取该人物关注了哪些贴吧,

20180417111815667.png

但是这些内容是javascript解析的:
20180417111823505.png

以在贴吧的人物主页爬取为例,在spider.py文件里面输入下面的内容。

import scrapy


class Spider(scrapy.Spider):
    name = 'tieba'
    allowed_domains = []
    start_urls = ["https://www.baidu.com/p/%CE%E5%D0%D0%C1%A6%D1%A7%B4%B4%CA%BC%C8%CB?from=tieba"]

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self,response):
        print("xxx" * 50)
        print(response.xpath('//*[@id="1000003"]/ul/li[1]/a/div[4]/text()').extract())
        print("xxx" * 50)

你会看到这样的信息:
20180417111901132.png

2、使用scrapy-splash#


在settings.py文件中,你需要额外的填写下面的一些内容

# 添加splash渲染服务
SPLASH_URL = 'http://ip地址:端口号' # 这里需要填写你的ip地址

# 下载器中间件
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}

# 去重过滤器
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'

# 使用Splash的Http缓存
HTTPCACHE_STOPAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

在spider.py文件中,填入下面的代码:

import scrapy
from scrapy_splash import SplashRequest # 导入scrapy_splash包


class TiebaSpider(scrapy.Spider):
    name = 'tieba'
    allowed_domains = []
    start_urls = ["https://www.baidu.com/p/%CE%E5%D0%D0%C1%A6%D1%A7%B4%B4%CA%BC%C8%CB?from=tieba"]

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url=url, callback=self.parse, args={'wait':1}, endpoint='render.html') # 配置requsts

    def parse(self, response):
        print("xxx" * 50)
        print(response.xpath('//*[@id="1000003"]/ul/li[1]/a/div[4]/text()').extract())
        print("xxx" * 50)

下面就是运行这个项目,记得在docker里面先把splash渲染服务运行起来。
结果如下图所示。
2018041711194015.png

posted @   selfcs  阅读(363)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示
主题色彩