使用Scrapy从动态网页中抓取网址

平良

我想在Scrapy中制作一个网络抓取工具,以从该网站提取10000个新闻链接https://hamariweb.com/news/newscategory.aspx?cat=7当我向下滚动更多链接负载时,此页面是动态的。

我用硒尝试过,但是没有用。

import scrapy
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from scrapy import signals
from scrapy.http import HtmlResponse

class WebnewsSpider(scrapy.Spider):
   name = 'webnews'
   allowed_domains = ['www.hamariweb.com']
   start_urls = ['https://hamariweb.com/news/newscategory.aspx?cat=7']


 def __init__ (self):
    options = webdriver.ChromeOptions()
    options.add_argument("--start-maximized")
   # options.add_argument('--blink-settings=imagesEnabled=false')
    options.add_argument('--ignore-certificate-errors')
    options.add_argument('--incognito') 
    self.driver = webdriver. Chrome("C://Users//hammad//Downloads//chrome 
    driver",chrome_options=options)

def parse(self, response):
    self.driver.get(response.url)
    pause_time = 1
    last_height = self.driver.execute_script("return document.body.scrollHeight")
    #start = datetime.datetime.now()

    while True:
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight + 400);")
        time.sleep(pause_time)
        print("\n\n\nend\n\n\n")
        new_height = self.driver.execute_script("return document.body.scrollHeight")

上面提到的代码以隐身模式打开浏览器,并继续向下滚动。我还想提取10000个新闻链接,并希望在达到限制时停止浏览器。

RNHTTR

您可以通过收集css hrefs将用于收集URL的逻辑添加到parse()方法中:

def parse(self, response):
    self.driver.get(response.url)
    pause_time = 1
    last_height = self.driver.execute_script("return document.body.scrollHeight")
    #start = datetime.datetime.now()
    urls = []
    while True:
        if len(urls) <= 10000:
            for href in response.css('a::attr(href)'):
                urls.append(href) # Follow tutorial to learn how to use the href object as you need
        else:
            break # Exit your while True statement when 10,000 links have been collected
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight + 400);")
        time.sleep(pause_time)
        print("\n\n\nend\n\n\n")
        new_height = self.driver.execute_script("return document.body.scrollHeight")

链接部分后面的scrapy教程中有很多有关如何处理链接的信息您可以使用那里的信息来学习使用scrapy链接的其他操作。

我尚未使用无限滚动进行测试,因此您可能需要进行一些更改,但这应该可以使您朝正确的方向前进。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用PHP从动态网页中抓取页面链接?

来自分类Dev

使用Selenium从动态网页中抓取内容会返回错误的内容

来自分类Dev

使用R从动态网页提取文本

来自分类Dev

无法抓取动态网页

来自分类Dev

网页抓取动态网页Python

来自分类Dev

在动态网页中使用Python抓取按钮下载csv

来自分类Dev

当XML / XPath似乎不起作用时,如何使用Excel VBA从动态网页中解析值?

来自分类Dev

使用python scrapy进行动态网址爬网

来自分类Dev

使用scrapy搜寻动态网页以获取数据

来自分类Dev

如何通过Python抓取动态网页

来自分类Dev

抓取动态网页时,无法使用python mechanize从下拉列表中检索到任何值

来自分类Dev

Laravel中的动态网址

来自分类Dev

从动态网址php获取文件夹名称

来自分类Dev

如何使用scrapy在Python中抓取网址

来自分类Dev

如何使用动态网址的网址屏蔽

来自分类Dev

使用Ghost.py用python屏幕抓取动态网页

来自分类Dev

使用Ghost.py用python屏幕抓取动态网页

来自分类Dev

VBA HTML 抓取。使用动态网页,但无法指明所需的特定数据点

来自分类Dev

如果在网址中使用https,则不会显示动态网页内容

来自分类Dev

在角度6中创建动态网址

来自分类Dev

使用Ajax / Jquery加载动态网址

来自分类Dev

使用django和python的动态网页

来自分类Dev

使用硒解析动态网页

来自分类Dev

使用 Scrapy 抓取特定网页

来自分类Dev

网页抓取:如何从动态页面获取信息?

来自分类Dev

从动态表中抓取数据

来自分类Dev

emberjs:动态网址

来自分类Dev

MVC动态网址

来自分类Dev

回形针动态网址?