首页 > 其他分享 >下载中间件实战-Scrapy与Selenium结合

下载中间件实战-Scrapy与Selenium结合

时间:2023-06-25 20:22:05浏览次数:45  
标签:中间件 Selenium request spider Scrapy crawler

下载中间件实战-Scrapy与Selenium结合

有的页面反爬技术比较高端,一时破解不了,这时我们就是可以考虑使用selenium来降低爬取的难度。

问题来了,如何将Scrapy与Selenium结合使用呢?

思考的思路: 只是用Selenium来帮助下载数据。因此可以考虑通过下载中间件来处理这块内容。

Spider文件

@classmethod
 def from_crawler(cls, crawler, *args, **kwargs):
    spider = super(BaiduSpider, cls).from_crawler(crawler, *args, **kwargs)
    spider.chrome = webdriver.Chrome(executable_path='../tools/chromedriver.exe')
    crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed) 
    # connect里的参数 
    # 1. 处罚事件后用哪个函数处理
    # 2. 捕捉哪个事件
    return spider




  def spider_closed(self, spider):
    spider.chrome.close()

middlewares文件

def process_request(self, request, spider): 
    spider.chrome.get(request.url)
    html = spider.chrome.page_source
    return HtmlResponse(url = request.url,body = html,request = request,encoding='utf-8')

 

标签:中间件,Selenium,request,spider,Scrapy,crawler
From: https://www.cnblogs.com/jiangjiayun/p/17503857.html

相关文章

  • Scrapy 中 Downloader 设置代理
    fromscrapy.downloadermiddlewares.httpproxyimportHttpProxyMiddlewareclassMyProxyMiddleware:defprocess_request(self,request,spider):#request.meta['proxy']='http://ip:port'#request.meta['proxy']......
  • Scrapy_下载中间件设置UserAgent
    Scrapy中Downloader设置UA下载中间件是Scrapy请求/响应处理的钩子框架。这是一个轻、低层次的应用。通过可下载中间件,可以处理请求之前和请求之后的数据。如果使用下载中间件需要在Scrapy中的setting.py的配置DOWNLOADER_MIDDLEWARES才可以使用,比如:DOWNLOADER_MIDDLEWARE......
  • Scrapy_FormRequest对象的使用
    FormRequest是Request的扩展类,具体常用的功能如下:请求时,携带参数,如表单数据从Response中获取表单的数据FormRequest类可以携带参数主要原因是:增加了新的构造函数的参数formdata。其余的参数与Request类相同.formdata参数类型为:dictclassscrapy.http.FormRequest(ur......
  • Scrapy_Request对象Cookie的演示
     Cookie的使用importscrapyclassCookieSpider(scrapy.Spider):name="爬虫名"allowed_domains=["域名.com"]start_urls=["url地址"]defstart_requests(self):forurlinself.start_urls:cookie......
  • Selenium基础:下拉框操作 06
    *使用select方法方法一:fromselenium.webdriver.support.uiimportSelect方法二:fromselenium.webdriver.support.selectimportSelect选择项的选择,有3种方法:select_by_index(index):通过索引选择select_by_value(value):通过value值选择select_by_visible_text(text):通过......
  • Scrapy_Request对象dont_filter演示
    importscrapyclassBaiduSpider(scrapy.Spider):name="baidu"allowed_domains=["baidu.com"]start_urls=["https://baidu.com"]defparse(self,response):title=response.xpath('//title/text......
  • Selenium基础:鼠标操作 05
    *需要导入ActionChains类fromselenium.webdriver.common.action_chainsimportActionChains1、鼠标右击context_click(element)方法fromseleniumimportwebdriver#导入actionchainsfromselenium.webdriver.common.action_chainsimportActionChainsimporttime......
  • Scrapy 中 Request 的使用
    爬虫中请求与响应是最常见的操作,Request对象在爬虫程序中生成并传递到下载器中,后者执行请求并返回一个Response对象一个Request对象表示一个HTTP请求,它通常是在爬虫生成,并由下载执行,从而生成Response参数url(string)-此请求的网址callback(callable)-将使用此请求的响......
  • Scrapy 中 CrawlSpider 使用(二)
     LinkExtractor提取链接创建爬虫scrapygenspider爬虫名域名-tcrawlspiderfromscrapy.linkextractorsimportLinkExtractorfromscrapy.spidersimportCrawlSpider,RuleclassXsSpider(CrawlSpider):name="爬虫名"allowed_domains=["域名"]......
  • Scrapy 中 CrawlSpider 使用(一)
    创建CrawlSpiderscrapygenspider-tcrawl爬虫名(allowed_url)Rule对象Rule类与CrawlSpider类都位于scrapy.contrib.spiders模块中classscrapy.contrib.spiders.Rule(link_extractor,callback=None,cb_kwargs=None,follow=None,proces......