我想在Scrapy和它的xpath选择器的帮助下刮一个非常简单的网页,但由于某些原因,我有选择器不能在Scrapy中工作,但他们在其他xpath实用程序中工作Python Scrapy动态网站
我试图解析HTML的这个片段:
<select id="chapterMenu" name="chapterMenu">
<option value="/111-3640-1/20th-century-boys/chapter-1.html" selected="selected">Chapter 1: Friend</option>
<option value="/111-3641-1/20th-century-boys/chapter-2.html">Chapter 2: Karaoke</option>
<option value="/111-3642-1/20th-century-boys/chapter-3.html">Chapter 3: The Boy Who Bought a Guitar</option>
<option value="/111-3643-1/20th-century-boys/chapter-4.html">Chapter 4: Snot Towel</option>
<option value="/111-3644-1/20th-century-boys/chapter-5.html">Chapter 5: Night of the Science Room</option>
</select>
Scrapy parse_item代码:
def parse_item(self, response):
itemLoader = XPathItemLoader(item=MangaItem(), response=response)
itemLoader.add_xpath('chapter', '//select[@id="chapterMenu"]/option[@selected="selected"]/text()')
return itemLoader.load_item()
Scrapy不会从该提取任何文字,但如果我得到的SAM e xpath和html代码片段并运行它here它工作得很好。
如果我用这个XPath:
//select[@id="chapterMenu"]
我得到正确的元素,但是当我尝试访问的选项里面它不会得到任何
您的XPath对我来说看起来不错,通常Scrapy中的XPath对我来说工作正常。我会通过get_value检查使用XPath的结果。如果你得到正确的结果,错误发生在映射端。如果该值错误,则更容易实验并追踪XPath出了什么问题。我也会尝试摆脱主要的/ /这可能会导致意外的结果,在最小的HTML代码的变化的情况下。 – Achim
如果我使用这个xpath:// select [@ id =“chapterMenu”]我得到正确的元素,但是当我尝试访问里面的选项没有得到任何东西 – arnm
好吧所以我认为这可能是一个JavaScript问题,因为当我显示select标签为空的响应,但是当我在浏览器中查看源代码时,所有选项都存在 – arnm