Python:获取提取字符串的函数

时间:2017-09-07 10:39:52

标签: python python-3.x beautifulsoup

我需要从这个网站中提取每个城市的所有代码,以便创建一个表格的Python字典:

('city' : 'institution code')

从字符串开始:

<li onclick="fillEnte('ABANO TERME','2050540010');">ABANO TERME (PD)</li>

Abano Terme是城市的名称,2050540010是机构代码。

我知道我应该使用GET而不是正则表达式,但我不知道怎么做。或者我应该使用urllib2吗?

P.S。我是一名自学者,请耐心等待。

1 个答案:

答案 0 :(得分:1)

您应安装并使用requestsBeautifulSoup执行此操作,如下所示:

from bs4 import BeautifulSoup
import requests
import re

url = "http://finanzalocale.interno.it/apps/floc.php/ajax/searchComune"
r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405'})
soup = BeautifulSoup(r.content, "html.parser")

city_codes = {}

for li in soup.find_all('li'):
    city, code = re.search(r"'(.*?)','(.*?)'", li['onclick']).groups()
    city_codes[city] = code

print city_codes['ABANO TERME']

哪会给你:

2050540010

您通常可以使用以下方法安装这些:

pip install requests
pip install beautifulsoup4

该脚本首先使用请求库获取HTML并将其传递给BeautifulSoup以解析HTML。请注意,此网站需要指定合适的User-Agent,否则将不会返回数据。

接下来,该脚本使用find_all()函数获取HTML中的所有<li>条目。其中每个都包含一个onclick=属性,该属性被提取。然后使用正则表达式从文本中提取citycode部分。然后将它们用于构建您的code_codes字典。