【发布时间】: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,重定向/查询结果/手动路径跟踪是完美的!
-
wgethtml 文件怎么样,直接检查@href 看看是不是 javascript 不一样。 -
这是因为您使用的是不同的用户代理。
-
@kyle K,您能否再解释一下,以及您认为需要做些什么来标准化它?
标签: python xpath web-scraping scrapy