【问题标题】:How to use scrapy-selenium to scrape javascript input如何使用 scrapy-selenium 抓取 javascript 输入
【发布时间】:2021-02-11 14:10:06
【问题描述】:

我正在尝试修改我的网络爬虫,以便能够获取网站上 Javascript 输入的信息。并且想用硒而不是飞溅来做。下面是一个例子:

class TestSpider(Spider):
name="test"
start_urls = ["http://crawler-test.com/mobile/dynamic"]


my_excludes = ['style','link','meta','script','noscript','base']
my_str = '//text()['
for my_exclude in my_excludes:
    my_str = my_str + "not(ancestor::" + my_exclude + ") and "
my_str = my_str[:-5] + "]"

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

def parse(self, response):
    body = response.xpath(self.my_str).re(".*")
    file = open("TestResult.txt", "w")
    file.writelines(body)
    file.close()
    print(body)

我还按照文档中的建议对设置进行了更改:

from shutil import which

BOT_NAME = 'TestSpider'

SPIDER_MODULES = ['TestSpider.spiders']
NEWSPIDER_MODULE = 'TestSpider.spiders'
 
SELENIUM_DRIVER_NAME = 'firefox'

SELENIUM_DRIVER_EXECUTABLE_PATH = which('geckodriver')

SELENIUM_DRIVER_ARGUMENTS=['-headless']

DOWNLOADER_MIDDLEWARES = {'scrapy_selenium.SeleniumMiddleware': 800}

我得到了网站的静态输入,但不是动态的。 (Javascript) 一些帮助会非常好。 谢谢!

【问题讨论】:

    标签: python selenium scrapy


    【解决方案1】:

    刚刚阅读了您的文章,我关注的是同样的问题。

    chk_seller_xpath = '//*/input[@id="e1-13"]'
    js = "document.evaluate('%s', document, null,  XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click()" % chk_seller_xpath
    driver.execute_script(js)
    

    我可以通过执行上述操作在 javascript 中执行脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2020-11-13
      • 2020-04-03
      相关资源
      最近更新 更多