Webscraping phonenumbers

时间:2017-12-19 11:33:01

标签: python csv web-scraping beautifulsoup lxml

首先,我是编程新手,我的英语不是最好的。

我在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文件中获取这些数字吗?

1 个答案:

答案 0 :(得分:1)

尝试以下解决方案获取电话号码:

import requests
from lxml import html

source = html.fromstring(requests.get("https://www.gelbeseiten.de/schluesselfertigbau/bergheim,,,,,umkreis-50000").text)
phone_number = "".join([text_node for text_node in source.xpath('//li[@class="phone"]//text()') if text_node.strip()])
print(phone_number)

输出:

'(02271) 6 79 70'