我是Python的新手,所以如果这是一个新手问题,我很抱歉。
我正在尝试构建一个涉及webscraping的程序,我注意到Python 3似乎比Python 2.x系列显着减少了web-scraping模块。
美丽的汤,机械化和scrapy - 推荐给我的三个模块 - 似乎都是不相容的。
我想知道这个论坛上是否有人使用python 3进行网页编写有一个很好的选择。
任何建议都将不胜感激。
谢谢, 将
答案 0 :(得分:3)
lxml.html
适用于Python 3,至少可以进行html解析。
正在开发的BeautifulSoup 4应该支持Python 3(我已经做了一些工作)。
答案 1 :(得分:0)
我有点新手,但我发现BeautifulSoup 4
非常好,我正在学习并使用requests
和lxml
模块。请求模块用于获取url和lxml(也可以使用内置的html.parser
进行解析,但我认为lxml
更快)用于解析。
简单用法是:
import requests
from bs4 import BeautifulSoup
url = 'someUrl'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
不是简单的例子如何从html获取href:
links = set()
for link in soup.find_all('a'):
if 'href' in link.attrs:
links.add(link)
然后,您将从您的网址获得包含唯一链接的set
。
其他示例如何解析html的特定部分,例如如果您希望解析具有<p>
类的所有testClass
标记:
list_of_p = []
for p in soup.find_all('p', {'class': 'testClass'}):
for item in p:
list_of_p.append(item)
还有更多你可以使用它看起来很容易。