我正在尝试抓取xml database的these addresses链接列表。 (第二个链接是一个实际包含一些地址的示例页面。许多链接都没有。)
我能够检索我想要抓取的初始链接列表,但我似乎无法更进一步提取我正在寻找的最终信息(地址)。
我认为我的语法有错误,我尝试使用漂亮的汤和Python包含的库来抓取它,但它不起作用。
BSoup:
from bs4 import BeautifulSoup
import requests
import re
resultsdict = {}
companyname = []
url1 = 'http://www.agenzia-interinale.it/sitemap-5.xml'
html = requests.get(url1).text
bs = BeautifulSoup(html)
# find the links to companies
company_menu = bs.find_all('loc')
for company in company_menu:
data = bs.find("html",{"i"})
print data
非第三方:
import requests
import xml.etree.ElementTree as et
req = requests.get('http://www.agenzia-interinale.it/sitemap-5.xml')
root = et.fromstring(req.content)
for i in root:
print i[0].text
任何输入都表示赞赏!感谢。
答案 0 :(得分:1)
你的语法还可以。您只需要在第一页中关注这些链接,以下是米兰页面的样子:
from bs4 import BeautifulSoup
import requests
import re
resultsdict = {}
companyname = []
url1 = 'http://www.agenzia-interinale.it/sitemap-5.xml'
html = requests.get(url1).text
bs = BeautifulSoup(html)
company_menu = bs.find_all('loc')
for item in company_menu:
if 'milano' in item.text:
subpage = requests.get(item.text)
subsoup = BeautifulSoup(subpage.text)
adresses = subsoup.find_all(class_='riquadro_agenzia_off')
for adress in adresses:
companyname.append(adress.text)
print companyname
要获取所有地址,只需删除代码中的“milano”块即可。我不知道它们是否都是根据相关规则进行格式化的,因为milano地址在div下有class =“riquandro_agenzia_off”,如果其他子页面也以这种方式格式化,那么它应该可以工作。无论如何,这应该让你开始。希望能帮助到你。