gpt4 book ai didi

python - 在python中使用scrapy执行Javascript提交表单函数

转载 作者:太空狗 更新时间:2023-10-29 22:04:19 25 4
gpt4 key购买 nike

我正在使用 scrapy 框架抓取一个站点,但在单击用于打开另一个页面的 javascript 链接时遇到了问题。

我可以将页面上的代码识别为:

<a class="Page" alt="Click to view job description" title="Click to view job description" href="javascript:sysSubmitForm('frmSR1');">Accountant&nbsp;</a>

谁能建议我如何在 scaroy 中执行该 javascript 并通过它获取另一个页面,我可以从该页面获取数据。

提前致谢

最佳答案

查看下面有关如何将 scrapy 与 selenium 一起使用的片段。抓取速度会变慢,因为您不只是下载 html,而且您将获得对 DOM 的完全访问权限。

注意:我已经复制粘贴了这段代码,因为之前提供的链接不再有效。

# Snippet imported from snippets.scrapy.org (which no longer works)

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.http import Request

from selenium import selenium

class SeleniumSpider(CrawlSpider):
name = "SeleniumSpider"
start_urls = ["http://www.domain.com"]

rules = (
Rule(SgmlLinkExtractor(allow=('\.html', )),
callback='parse_page',follow=True),
)

def __init__(self):
CrawlSpider.__init__(self)
self.verificationErrors = []
self.selenium = selenium("localhost", 4444, "*chrome", "http://www.domain.com")
self.selenium.start()

def __del__(self):
self.selenium.stop()
print self.verificationErrors
CrawlSpider.__del__(self)

def parse_page(self, response):
item = Item()

hxs = HtmlXPathSelector(response)
#Do some XPath selection with Scrapy
hxs.select('//div').extract()

sel = self.selenium
sel.open(response.url)

#Wait for javscript to load in Selenium
time.sleep(2.5)

#Do some crawling of javascript created content with Selenium
sel.get_text("//div")
yield item

关于python - 在python中使用scrapy执行Javascript提交表单函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com