【问题标题】:Browser rendered URL and Scraped URL are different. Please explain浏览器呈现的 URL 和抓取的 URL 是不同的。请解释
【发布时间】:2015-02-14 11:07:27
【问题描述】:

我是网络抓取、Python 和 Scrapy 领域的新手。如果我的理解存在一些根本性的缺陷,请原谅我。我来自 JAVA/R 背景。我正在尝试从www.amazon.in 获取书籍详细信息。我在使用 chrome 的 XPATH finder 后构建了所需的 XPATH,但是当我在 Scrapy shell 中尝试相同的 XPATH 查询时,会显示不同形式的 URL。

例如,对于我得到的 XPATH 查找器中的以下 XPATH 查询 //ul[@id='ref_976390031']/li[23]/a[@href]/@href

www.amazon.in/s/ref=lp_976389031_nr_n_21?fst=as%3Aoff&rh=n%3A976389031%2Cn%3A%21976390031%2Cn%3A1318203031&bbn=976390031&ie=UTF8&qid=1418660681&rnid=976390031

但是当我在scrapy shell的响应变量上尝试它为response.xpath("//ul[@id='ref_976390031']/li[23]/a[@href]/@href").extract()

我明白了

http://www.amazon.in/b?ie=UTF8&node=1318203031

更有趣的是,scraped 链接在键入浏览器时会进入不同的页面,而不是它应该登陆的页面(相同的行为,即登陆不同的页面时发生 刮掉)

我观察到的另一件事是,虽然 scraping 链接 scraped 与浏览器呈现的链接不同,但大多数链接都被正确定向/重定向,而有些链接像这不。

这种行为使我的 scraper 在某些链接上成功抓取,而某些链接根本没有scraper

对于此行为的任何帮助/解释将不胜感激。提前致谢。

【问题讨论】:

  • 1)scrapy 不会执行 javascript,但浏览器会执行,因此更改可能是由 javascript 引起的。 (对于这种情况,phantomjs 可能会有所帮助) 2)某些网站会通过不同的 UserAgent 响应不同的内容
  • 但是有些链接确实可以正常工作,而且我在 Chrome 和 mozilla 上都尝试过相同的 xpath,重定向/查询结果/手动路径跟踪是完美的!
  • wget html 文件怎么样,直接检查@href 看看是不是 javascript 不一样。
  • 这是因为您使用的是不同的用户代理。
  • @kyle K,您能否再解释一下,以及您认为需要做些什么来标准化它?

标签: python xpath web-scraping scrapy


【解决方案1】:

Kyle K,warvariuc 是对的,该站点为不同的用户代理呈现不同的 URL。

settings.py中添加以下参数解决了这个问题

USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"

感谢大家抽出宝贵时间回复。

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 2013-01-23
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多