【发布时间】:2018-06-01 20:04:27
【问题描述】:
首先,我是一个编程新手,我的英语不是最好的。
我在 Windows 10 Pro 上使用 Python 3.6。
经过反复试验,我终于弄清楚了如何通过 lxml 从网页中抓取数据,以及如何使用 beautifulsoup 和 csv 将其添加到 Excel 工作表中。
到目前为止,这对我来说很有效。收集姓名、地址和距离列表非常容易。但是当我试图提取电话号码和电子邮件时,我遇到了麻烦。经过一番研究,我发现他们拆分了电话号码并对其进行了编码。电子邮件也有点棘手。
我要从中提取数据的网页是: https://www.gelbeseiten.de/schluesselfertigbau/bergheim,,,,,umkreis-50000
我发现电话号码的第一部分在这里:
<span class="nummer">(02271) 6 79</span>
他们把剩下的都藏在这里了:
<span class="suffix encode_me telSelector128028047679_2623072" data-telselector="telSelector128028047679_2623072" data-telsuffix="IDcw"> 70</span>
即使第一部分看起来很简单,我也不能像以前那样使用 lxml 来提取它。
所以我的问题是,初学者是否仍有可能提取电话号码和电子邮件?
或者我应该尝试从打印的 PDF 文件中删除这些数字吗?
【问题讨论】:
-
我很难理解你的问题。您是否在问是否可以从 HTML 属性中提取数字?当然。试一试,告诉我们它是如何失败的 - 我们很乐意提供帮助!
-
为了清楚起见,完整的电话号码应该是
(02271) 6 79 70? -
@M.T.是的。这就是我需要的方式
-
更糟糕的是:下载的html中没有电话号码的最后一部分:它是通过DOM修改下载后用javascript编写的。这意味着您不能仅使用
urllib.request和BeautifulSoup直接获取它。换句话说,他们不希望您从机器人中使用他们的页面... -
你好 Serge,还有其他方法吗?与:
import re with open('text.txt') as fp: lines = fp.read().split("\n")我正在从“strg-a”复制的文本中获取一个列表,其中包含完整的数字。但我不知道如何过滤电话号码列表。我尝试了正则表达式,但我无法提供所需的模式...
标签: python csv web-scraping beautifulsoup lxml