【发布时间】:2020-04-03 01:10:40
【问题描述】:
这可能是一个很长的尝试,但人们一直对我过去发布的问题非常有帮助,所以我会尝试。如果有人可以帮助我,那就太棒了……
我正在尝试使用 Scrapy 在中国在线报纸上搜索关键字后获取搜索结果(链接) - pages like this
当我在 Chrome 中检查页面的 html 时,文章的链接似乎在那里。但是当我尝试使用 Scrapy 蜘蛛抓取它时,html 更加基本,并且我想要的链接不会出现。我认为这可能是因为使用 JavaScript 将结果绘制到页面?我尝试将 Scrapy 与 'scrapy-selenium' 结合使用来解决这个问题,但它仍然无法正常工作。我听说 Splash 可能会起作用,但这似乎设置起来很复杂。
这是我的 Scrapy 蜘蛛的代码:
import scrapy
from scrapy_selenium import SeleniumRequest
class QuotesSpider(scrapy.Spider):
name = "XH"
def start_requests(self):
urls = [
'http://so.news.cn/#search/0/%E4%B8%80%E5%B8%A6%E4%B8%80%E8%B7%AF/1/'
]
for url in urls:
yield SeleniumRequest(url=url, wait_time=90, callback=self.parse)
def parse(self, response):
print(response.request.meta['driver'].title)
page = response.url.split("/")[-2]
filename = 'XH-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)
如果有帮助,我也可以发布任何其他 Scrapy 文件。我还修改了settings.py - 关注these instructions。
任何帮助将不胜感激。我完全被这个困住了!
【问题讨论】:
-
请仔细检查您粘贴的代码。我认为你的复制/粘贴很糟糕。
-
感谢您的回复。我已经更正了代码的输入。
-
@Gallaecio - 感谢您的评论。我已经通读了这个,它似乎指向使用 Splash(通过 Docker)。这是唯一的方法吗?是否不可能像我一直在尝试做的那样通过 Selenium 来做到这一点......?感谢您的帮助。
标签: python selenium web-scraping scrapy