【问题标题】:Extracting Unstructured Addresses and email ids as variables from scraped text - Python从抓取的文本中提取非结构化地址和电子邮件 ID 作为变量 - Python
【发布时间】:2020-11-20 23:17:02
【问题描述】:

我是python的新手,所以如果这似乎是一个简单的问题,请原谅我。下面的代码成功抓取了一个网页。有没有办法从该文本中提取地址、电子邮件 ID 和联系电话并将其放入数据框中。我已经搜索了两种方法:-

  • REGEX - 但它可能不起作用,因为我有很多网站要抓取,而且 地址的结构可能并不总是规则的。
  • Pyap - 它仅适用于美国和加拿大地址。

除了上述两种方法之外,还有其他方法可以获取所需的详细信息吗:-

import requests
from bs4 import BeautifulSoup

link = input("ENTER WEBPAGE") # for example, i am using this webpage as of now "[https://glg.it/contact-us/][1] "

response = requests.get(url)

details = response.text

scraped_details = BeautifulSoup(details, "html.parser")
pretty1 = scraped_details.prettify()
print(pretty1)

感谢您的帮助!!

【问题讨论】:

    标签: python-3.x web-scraping bots


    【解决方案1】:

    可以通过修改匹配大多数地址格式的表达式来使用正则表达式>br>

    import re
    
    txt = ...
    regexp = "[0-9]{1,3} .+, .+, [A-Z]{2} [0-9]{5}"
    address = re.findall(regexp, txt)
    
    # address = ['44 West 22nd Street, New York, NY 12345']
    

    解释:

    [0-9]{1,3}:1到3位,地址号码

    (space): 号码和街道名称之间的空格

    .+:街道名称,任意出现次数的任意字符

    ,:城市前的一个逗号和一个空格

    .+: 城市,任意出现次数的任意字符

    ,:状态前的逗号和空格

    [A-Z]{2}: 从 A 到 Z 正好 2 个大写字符

    [0-9]{5}:5 位数字

    re.findall(expr, string) 将返回一个包含所有找到的匹配项的数组。

    【讨论】:

    • 它不起作用。例如,如果我要抓取此链接,它会给出空列表 - portcullis.co/en/contact-us 还有其他方式吗?
    猜你喜欢
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2019-03-11
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多