我是一名python初学者,刚开始学习使用Bsoup抓取网站。
我正在尝试从this site上的所有单独链接中提取联系信息(地址,公司名称)。
一般来说,我知道如何在典型的html源代码中检索href列表,但由于这是一个xml,我只能将链接隔离出来以下列格式:
[U 'http://www.agenzia-interinale.it/milano']
到目前为止,我的代码为我提供了该格式的所有公司链接,但我不知道如何通过每个链接并提取相关信息。
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:
print company.contents
从该链接列表中,首先需要确定该页面是否具有联系信息,然后如果它在this example中执行,则它应该提取地址/公司名称。
我相信我正在寻找的最终信息可以通过这个div过滤器隔离:
bs.find_all("div",{'style':'vertical-align:middle;'})
我尝试过嵌套循环,但我无法让它工作。
非常感谢任何输入!
答案 0 :(得分:2)
没有必要为此使用BeautifulSoup。该站点返回完全有效的XML,可以使用Python包含的工具进行解析:
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 # the <loc> text
答案 1 :(得分:2)
根据你的要求,你想从xml获取url,但是你正在寻找格式化xml的css标签......所以错误的方式。
试试这个:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
from BeautifulSoup import BeautifulSoup
url1 = 'http://www.agenzia-interinale.it/sitemap-5.xml'
f = urllib2.urlopen(url1)
bs = BeautifulSoup(f)
for url in bs.findAll("loc"):
print url.string
请注意,我正在使用findAll()方法,并查找“loc”标记,其中包含您要检索的数据。