2024年Go最新如何使用Scrapy来爬取动态页面_scrapy动态页面爬取实例,Golang开发基础不牢

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

selector = Selector(response)
# 提取数据
data = selector.xpath('//h1/text()').get()
yield {'data': data}

在上述代码中,我们使用SeleniumRequest来发送请求,并使用Selenium来加载和渲染动态页面。在parse()方法中,我们使用Scrapy-Selector来解析响应,并使用XPath或CSS选择器来提取数据。


4. 运行爬虫  
 通过运行以下命令来启动爬虫:


scrapy crawl myspider


Scrapy将会自动启动Selenium,并使用它来加载和渲染动态页面。然后,Scrapy-Selector将会解析响应并提取我们需要的数据。


注意事项:


* 确保已经正确配置了Chrome浏览器和对应的ChromeDriver,并将其路径正确设置在"settings.py"文件中的SELENIUM\_DRIVER\_EXECUTABLE\_PATH配置项中。
* 动态页面的加载可能会比较耗时,所以爬取速度可能会受到影响。可以通过调整Scrapy的并发请求数和下载延时来优化爬取速度。


下面将提供几个案例:


案例1:使用Scrapy爬取JavaScript渲染的页面



import scrapy
from scrapy.selector import Selector
from scrapy_selenium import SeleniumRequest

class MySpider(scrapy.Spider):
name = ‘myspider’
start_urls = [‘http://www.example.com’]

def start\_requests(self):
    for url in self.start_urls:
        yield SeleniumRequest(url=url, callback=self.parse)

def parse(self, response):
    # 使用Scrapy-Selector解析响应
    selector = Selector(response)
    # 提取数据
    data = selector.xpath('//h1/text()').get()
    yield {'data': data}

在这个案例中,我们使用SeleniumRequest来发送请求,并使用Selenium来加载和渲染动态页面。在parse()方法中,我们使用Scrapy-Selector来解析响应,并使用XPath或CSS选择器来提取数据。


案例2:使用Scrapy-Selector提取动态页面中的数据



import scrapy
from scrapy.selector import Selector
from scrapy_selenium import SeleniumRequest

class MySpider(scrapy.Spider):
name = ‘myspider’
start_urls = [‘http://www.example.com’]

def start\_requests(self):
    for url in self.start_urls:
        yield SeleniumRequest(url=url, callback=self.parse)

def parse(self, response):
    # 使用Scrapy-Selector解析响应
    selector = Selector(response)
    # 提取数据
    data = selector.xpath('//h1/text()').get()
    yield {'data': data}

在这个案例中,我们使用SeleniumRequest来发送请求,并使用Selenium来加载和渲染动态页面。使用Scrapy-Selector来解析响应,并使用XPath或CSS选择器来提取数据。


案例3:使用Scrapy爬取动态页面中的表单数据



import scrapy
from scrapy_selenium import SeleniumRequest

class MySpider(scrapy.Spider):
name = ‘myspider’
start_urls = [‘http://www.example.com’]

def start\_requests(self):
    for url in self.start_urls:
        yield SeleniumRequest(url=url, callback=self.parse)

def parse(self, response):
    # 提交表单数据
    yield scrapy.FormRequest.from_response(
        response,
        formdata={'username': 'myusername', 'password': 'mypassword'},
        callback=self.after_login
    )

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy可以使用Selenium或Splash来动态加载页面。其中,Selenium是一个自动化测试工具,也可以模拟用户在浏览器中的操作,从而获页面内容。而Splash是一个JavaScript渲染服务,可以模拟浏览器渲染页面,并且提供了API接口,方便与Scrapy集成。下面分别介绍使用Selenium和Splash来动态加载页面的方法。 1. 使用Selenium 首先需要安装selenium库和对应的浏览器驱动,如ChromeDriver。然后在Scrapy的Spider中使用Selenium来获页面内容,示例代码如下: ``` from scrapy import Spider from selenium import webdriver class MySpider(Spider): name = 'myspider' def start_requests(self): url = 'http://example.com' yield webdriver.Request(url, self.parse) def parse(self, response): driver = response.request.meta['driver'] # 使用driver来操作页面,获需要的内容 ... ``` 在start_requests方法中,使用webdriver.Request来发送请求,并将回调函数设置为parse。在parse方法中,通过response.request.meta['driver']获到了Selenium的WebDriver对象,然后就可以使用该对象来获页面内容。 2. 使用Splash 首先需要安装Splash服务,并启动该服务。然后在Scrapy的Spider中使用Splash来获页面内容,示例代码如下: ``` import scrapy from scrapy_splash import SplashRequest class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def start_requests(self): for url in self.start_urls: yield SplashRequest(url, self.parse, args={'wait': 0.5}) def parse(self, response): # 使用response来操作页面,获需要的内容 ... ``` 在start_requests方法中,使用SplashRequest来发送请求,并将回调函数设置为parse。在args参数中,可以设置Splash的一些参数,如wait表示等待时间。在parse方法中,直接使用response来获页面内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值