【发布时间】: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) 一些帮助会非常好。 谢谢!
【问题讨论】: