首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scrapy-selenium抓取javascript输入

如何使用scrapy-selenium抓取javascript输入
EN

Stack Overflow用户
提问于 2021-02-11 22:10:07
回答 1查看 41关注 0票数 0

我正在尝试修改我的网络爬虫,这样我就可以在网站上获得Javascript输入的信息。我想用硒而不是splash来做。下面是一个例子:

代码语言: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)

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

代码语言:javascript
复制
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)一些帮助会非常好。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-11 22:16:20

刚刚读了你的文章,我也在关注同样的问题。

代码语言:javascript
复制
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中执行脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66156341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档