涉及带有属性的HTML标记的Python Web抓取

涉及带有属性的HTML标记的Python Web抓取,第1张

概述我正在尝试制作一个网络刮板,它将解析出版物的网页并提取作者.网页的骨架结构如下: <html><body><div id="container"><div id="contents"><table><tbody><tr><td class="author">####I want whatever is located here ###</td></tr></tbody></ta 我正在尝试制作一个网络刮板,它将解析出版物的网页并提取作者.网页的骨架结构如下:
<HTML><body><div ID="container"><div ID="contents"><table><tbody><tr><td >####I want whatever is located here ###</td></tr></tbody></table></div></div></body></HTML>

到目前为止,我一直在尝试使用BeautifulSoup和lxml来完成这项任务,但我不知道如何处理这两个div标签和td标签,因为它们具有属性.除此之外,我不确定我是否应该更多地依赖于BeautifulSoup或lxml或两者的组合.我该怎么办?

目前,我的代码如下所示:

import re    import urllib2,sys    import lxml    from lxml import etree    from lxml.HTML.soupparser import fromstring    from lxml.etree import tostring    from lxml.CSSselect import CSSSelector    from BeautifulSoup import BeautifulSoup,NavigableString    address='@R_404_6822@://www.example.com/'    HTML = urllib2.urlopen(address).read()    soup = BeautifulSoup(HTML)    HTML=soup.prettify()    HTML=HTML.replace('&nbsp','&#160')    HTML=HTML.replace('&iacute','&#237')    root=fromstring(HTML)

我意识到很多import语句可能是多余的,但我只是复制了我目前在更多源文件中所拥有的内容.

编辑:我想我没有说清楚,但我在页面中有多个标签,我想要刮.

解决方法 从你的问题我不清楚为什么你需要担心div标签 – 如何做:
soup = BeautifulSoup(HTML)thetd = soup.find('td',attrs={'class': 'author'})print thetd.string

在您提供的HTML上,运行此命令完全发出:

####I want whatever is located here ###

这似乎是你想要的.也许你可以更准确地指定你需要的东西,这个超级简单的代码片段没有 – 你需要考虑的所有类作者的多个td标签(所有?只是一些?哪些?),可能缺少任何这样的标签(在这种情况下你想做什么),等等.很难从这个简单的例子和​​过多的代码中推断出你的规格到底是什么;-).

编辑:如果,根据OP的最新评论,有多个这样的td标签,每个作者一个:

thetds = soup.findAll('td',attrs={'class': 'author'})for thetd in thetds:    print thetd.string

……也就是说,没有太大的难度! – )

总结

以上是内存溢出为你收集整理的涉及带有属性的HTML标记的Python Web抓取全部内容,希望文章能够帮你解决涉及带有属性的HTML标记的Python Web抓取所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存