9

我希望提取网页上呈现的部分数据。我可以使用下面的代码从页面中提取整个数据并将其保存在文本文件 (RAW) 中。

curl http://webpage -o "raw.txt"

只是想知道是否还有其他选择和优势。

4

4 回答 4

7

我会使用requestsBeautifulSoup的组合。

from bs4 import BeautifulSoup
import requests    
    
session = requests.session()    
req = session.get('http://stackoverflow.com/questions/10807081/script-to-extract-data-from-wbpage')    
doc = BeautifulSoup(req.content)    
print(doc.findAll('a', { "class" : "gp-share" }))
于 2012-05-29T21:46:35.870 回答
1

cURL 是一个好的开始。更好的命令行将是:

curl -A "Mozilla/5.0" -L -k -b /tmp/c -c /tmp/c -s http://url.tld

因为它使用 cookie、用户代理、SSL 证书和其他东西。

man curl

于 2012-05-29T21:50:40.620 回答
1
  1. 保存/处理单个 Web 资源:上述方法适用于单个文件/Web 资源。您还可以根据预设模式管道正则表达式和截断/跳过数据。例如:保存所有标签源网址。

  2. 递归地保存/处理整个目录或网站:使用 Python 或 Perl 脚本,它可以迭代地拉下属于页面或网站 dns 名称的所有链接和资源。在 Python 中,我会使用 http lib 并递归解析标签(确保有深度限制,或者对于大型网站,您最终可能会保存大量数据!)。Beautiful Soup是一个简单而安全的选择——它是一个 Python 库,可以抓取 Web 数据、导航、搜索远程 Web 资源的解析树。它还可以修改解析的本地内容等。

于 2012-05-29T21:55:33.560 回答
0

您的示例代码将从网页中获取所有数据。如果您想解析网页并提取特定信息,我建议您使用一些现有的解析器。

我通常使用BeautifulSoup从 html 页面中提取数据。

于 2012-05-29T21:46:51.643 回答