gpt4 book ai didi

javascript - 为什么我的 scrapy 下载器中间件不能正确呈现 javascript?

转载 作者:行者123 更新时间:2023-11-29 22:17:47 26 4
gpt4 key购买 nike

我正在使用 this scrapy code snippet呈现我想从中抓取数据的网站的 javascript 代码。该站点是一个视频搜索引擎,搜索结果由 javascript 呈现。我想点击下一页链接并废弃整个搜索到的项目。以下是我的爬虫代码:

class VideoSpider(BaseSpider):
name = "VideoSpider"
allowed_domains = ["domain.com"]
start_urls = ['video search results link']

def parse(self, response):
hxs = HtmlXPathSelector(response)
video_items = hxs.select("//ul[@id='results-list']/li[@class='result']")
#items = []
for vi in video_items:
item = VideoItem()
link = vi.select("a[@class='result-link']/@href").extract()[0]
title = vi.select("a[@class='result-link']/@title").extract()[0]
#print title,link
item['title'] = title
item['url'] = link
yield item

next_page = hxs.select("//div[@id='page']/a")
for np in next_page:
next_url = np.select("@href").extract()
if next_url:
url = urlparse.urljoin(response.url, next_url[0])
#url = response.url, str(next_page)
self.log("find next page url: %s"%url, log.INFO)
yield Request(url, callback=self.parse)

我发现 start_urls 中的链接已正确下载并正确呈现,如下所示:

<ul id="results-list" class="clearfix" static="bl=normal">
<li class="result" href="" </li>
<li class="result" href="" </li>
<li class="result" href="" </li>
....

因此在第一页上提取成功,而当获取下一页链接时,javascript 不会像这样呈现:

<ul id="results-list" class="clearfix" static="bl=normal"></ul>
<div id="loading">trying to load page for you, please be patient</div>

所以抓取停止了,因为它无法提取链接,因为 results-list 没有呈现。为什么第一页正确呈现而第二页不正确?我应该使用 selenium 而不是 webkit 和 jswebkit 吗?

最佳答案

我不是专家,但我最近爱上了 Scrapy 和 Selenium。我曾经主要使用 urllib2/beautifulsoup/regex/mechanize 使用 perl 和 python 抓取核心,但遇到了我觉得不可能处理的网站,网站广泛使用 ajax,没有从源中提取的数据。甚至无法通过屏蔽帖子请求参数来破坏的网站,所以有一段时间我放弃了我的希望和梦想。

我花了一点时间,但现在我将 Selenium 与 Webkit 结合使用,这太棒了。我觉得自己像个职业黑客。

事实上,我非常有信心大多数网站都无法阻止我。它完美地模拟了使用浏览器的用户,我只是使用 sleep 来确保我允许页面 ajax 正确加载。对于像亚马逊这样的困难网站,不要贪心,让你的点击随机间隔开。我已经运行了好几天的 selenium,没有任何问题。

我肯定会建议您研究 Selenium 。现在一切都使用 Ajax。

关于javascript - 为什么我的 scrapy 下载器中间件不能正确呈现 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096768/

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