Python 3网页抓取选项

时间:2011-08-10 23:54:13

标签: python-3.x web-scraping

我是Python的新手,所以如果这是一个新手问题,我很抱歉。

我正在尝试构建一个涉及webscraping的程序,我注意到Python 3似乎比Python 2.x系列显着减少了web-scraping模块。

美丽的汤,机械化和scrapy - 推荐给我的三个模块 - 似乎都是不相容的。

我想知道这个论坛上是否有人使用python 3进行网页编写有一个很好的选择。

任何建议都将不胜感激。

谢谢, 将

2 个答案:

答案 0 :(得分:3)

lxml.html适用于Python 3,至少可以进行html解析。

正在开发的BeautifulSoup 4应该支持Python 3(我已经做了一些工作)。

答案 1 :(得分:0)

我有点新手,但我发现BeautifulSoup 4非常好,我正在学习并使用requestslxml模块。请求模块用于获取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)

还有更多你可以使用它看起来很容易。