【发布时间】:2017-09-18 20:45:46
【问题描述】:
我刚刚学习 python,并决定玩一些网站抓取。
我创建了 1 个可以工作,而第二个,据我所知几乎相同,但不工作,我不知道为什么。
from lxml import html
import requests
page = requests.get('https://thronesdb.com/set/Core')
tree = html.fromstring(page.content)
cards = [tree.xpath('//a[@class = "card-tip"]/text()'),tree.xpath('//td[@data-th = "Faction"]/text()'),
tree.xpath('//td[@data-th = "Cost"]/text()'),tree.xpath('//td[@data-th = "Type"]/text()'),
tree.xpath('//td[@data-th = "STR"]/text()'),tree.xpath('//td[@data-th = "Traits"]/text()'),
tree.xpath('//td[@data-th = "Set"]/text()'),tree.xpath('//a[@class = "card-tip"]/@data-code')]
print(cards)
那个符合我的预期(我知道它不漂亮)。它从网站上的表格中抓取某些元素。
这个返回[[]]:
from lxml import html
import requests
page = requests.get('http://www.redflagdeals.com/search/#!/q=baby%20monitor')
tree = html.fromstring(page.content)
offers = [tree.xpath('//a[@class = "offer_title"]/text()')]
print(offers)
我期望它做的是给我一个列表,其中包含页面上每个 offer_title 元素的文本。
我从 Firebug 中获取的 xpath,即:
/html/body/div[1]/div/div/div/section/div[2]/ul[1]/li[2]/div/h3/a
这是来自网站的实际字符串:
<a href="/deal/other-kids-babies/angelcare-digital-video-and-sound-monitor-8999-9000-off-9724/" class="offer_title">Angelcare Digital Video And Sound Monitor - $89.99 ($90.00 Off)</a>
我还阅读了其他一些问题,但他们没有回答第一种方式是如何工作的,但不是第二种方式。由于新帐户的链接限制,无法发布它们。 标题:
- Python - 无法使用 Beautiful 从网页表中检索数据 汤或 lxml xpath
- Python lxml xpath 无输出
- 使用 lxml / xpath() 从站点抓取文本时遇到问题
任何帮助将不胜感激。我在 lxml 网站上阅读了一些关于 xpath 的内容,但我在构建查询的方式中可能遗漏了一些东西。
谢谢!
【问题讨论】: