【问题标题】:Scrapy is provides no output with xpath selectorScrapy 不提供 xpath 选择器的输出
【发布时间】:2020-05-01 12:10:01
【问题描述】:

这是我试图在scrapy shell 中运行的代码,以从dailymail.co.uk 获取文章的标题。

headline = response.xpath("//div[@id='js-article-text']/h2/text()").extract()

$ scrapy shell "https://www.dailymail.co.uk/tvshowbiz/article-8257569/Shia-LaBeouf-revealed-heavily-tattoo-torso-goes-shirtless-run-hot-pink-shorts.html"

【问题讨论】:

  • 欢迎来到 StackOverFlow,@ShubhanshuRathi! 你有什么问题?请详细说明:)

标签: xpath scrapy web-crawler


【解决方案1】:

根据您的请求设置用户代理,它应该可以工作:

scrapy shell -s USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0" "https://www.dailymail.co.uk/tvshowbiz/article-8257569/Shia-LaBeouf-revealed-heavily-tattoo-torso-goes-shirtless-run-hot-pink-shorts.html"
response.xpath("//div[@id='js-article-text']/h2/text()").extract()

输出:

Shia LaBeouf reveals his heavily tattoo torso as he goes shirtless for a run in hot pink shorts

【讨论】:

  • 谢谢 :) 。它的工作。你能解释一下为什么我们必须这样做吗? ?如果我们想将它添加到我们正在运行scrapy shell的文件中怎么办?我正在使用 scraoy shell 来测试我的路径和调试,我应该在我的 python 文件中进行哪些更改才能使其运行。
  • 有些网站不希望你抓取他们的内容。因此,他们为检测机器人添加了一层保护。对于您的蜘蛛,您应该检查 docs.scrapy.org/en/latest/topics/… 。通过 DEFAULT_REQUEST_HEADERS : { 'user-agent': 'useragentofyourchoice' } 使用自定义设置或直接在 settings.py (USER_AGENT = 'useragentofyourchoice') 中设置用户代理。
  • 那么我们是否有任何来源可以从中获取用户代理列表并随机使用它们以使它们无法检测到我们?
  • 如果您从单个 IP 地址发出请求,轮换用户代理不会帮助您避免被阻止。它将增加更改以被阻止。当反抓取措施看到相同的 IP 地址向不同的用户代理发送许多请求时,它们会将请求标记为异常。我们正在轮换爬虫变得太慢的 IP 地址。是否有任何其他选项可以防止机器人被阻止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多