从一页打印html不会显示所有带有python和urllib2的源页面[重复]

Posted

技术标签:

【中文标题】从一页打印html不会显示所有带有python和urllib2的源页面[重复]【英文标题】:Printing the html from one page doen't show all the source page with python and urllib2 [duplicate] 【发布时间】:2013-08-20 10:01:59 【问题描述】:

我正在尝试阅读亚马逊的特定页面。

req = urllib2.Request('http://www.amazon.com/Upright-Citizens-Brigade-Comedy-Improvisation/dp/0989387801/ref=lp_1_1_6/175-0367440-7496156?ie=UTF8&qid=1376827779&sr=1-6%20buybox._V181901516_.png)%20center%20top%20no-repeat;')
req.add_header('User-agent', 'Mozilla/5.0\
            (Windows NT 6.2; WOW64) AppleWebKit/537.11 (Khtml, like Gecko)\
            Chrome/23.0.1271.97 Safari/537.11')
response=urllib2.urlopen(req)
html = response.read()
print html

我正在尝试从页面源代码中显示的新项目“$25.00”中读取价格,但该部分未显示在 html 打印中。我做错了什么?

【问题讨论】:

您应该可以将当前请求的 url 替换为:http://www.amazon.com/Upright-Citizens-Brigade-Comedy-Improvisation/dp/0989387801/,然后只需解析 html 即可找到价格。这里有很多有用的答案:Parsing HTML Python. 【参考方案1】:

您应该使用 html 解析器,例如 lxml 或 BeautifulSoup。这是一个使用lxml的例子:

parser = etree.HTMLParser()
root = etree.fromstring(html, parser=parser)

print root.xpath('//td[@class="a-text-right dp-new-col"]/a/span/text()')[0]

打印:

$25.00

注意,所需的标签及其值是使用xpath 表达式找到的:

XPath,即 XML 路径语言,是一种用于选择节点的查询语言 来自 XML 文档。

另见:

Parsing HTML using Python Parsing HTML in Python

希望对您有所帮助。

【讨论】:

以上是关于从一页打印html不会显示所有带有python和urllib2的源页面[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在后续页面上打印带有自定义标题的 html 表格

通过DrawerNavigator中的StackNavigator将数据从一页传递到另一页

如何在 Jquery DataTable 中添加新行而不会在从一页移动到另一页时丢失新行

从一页获取图像以显示在以下一页上

jquery jqprint 打印 每页控制打印内容,每一页都带有表头,怎么搞啊

我可以将 Twig 块从一页过滤到另一页吗?