在Python中使用Beautifulsoup迭代xml中的非href链接并检索特定信息

在Python中使用Beautifulsoup迭代xml中的非href链接并检索特定信息,python,html,xml,web-scraping,beautifulsoup,Python,Html,Xml,Web Scraping,Beautifulsoup,我是一名python初学者,刚刚开始学习使用Bsoup抓取站点 我正试图从网络上所有单独的链接中提取联系信息(地址、公司名称) 一般来说,我知道如何在典型的html源代码中检索HREF列表,但由于这是一个xml,因此我只能将链接隔离为以下格式: [u'] 到目前为止,我的代码为我提供了该格式的所有公司链接,但我不知道如何使其遍历每一个链接并提取相关信息 from bs4 import BeautifulSoup import requests import re resultsdict = {

我是一名python初学者,刚刚开始学习使用Bsoup抓取站点

我正试图从网络上所有单独的链接中提取联系信息(地址、公司名称)

一般来说,我知道如何在典型的html源代码中检索HREF列表,但由于这是一个xml,因此我只能将链接隔离为以下格式:

[u']

到目前为止,我的代码为我提供了该格式的所有公司链接,但我不知道如何使其遍历每一个链接并提取相关信息

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
从这个链接列表中,它首先需要确定页面是否有联系人信息,如果有,比如in,那么它应该提取地址/公司名称

我相信我要寻找的最终信息可以通过这个div过滤器隔离:

bs.find_all("div",{'style':'vertical-align:middle;'})
我尝试过放入嵌套循环,但无法使其工作


非常感谢您的任何意见

无需为此使用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
导入请求
将xml.etree.ElementTree作为et导入
req=请求。获取('http://www.agenzia-interinale.it/sitemap-5.xml')
root=et.fromstring(请求内容)
对于根目录中的i:
打印i[0]。文本#文本

无需为此使用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
导入请求
将xml.etree.ElementTree作为et导入
req=请求。获取('http://www.agenzia-interinale.it/sitemap-5.xml')
root=et.fromstring(请求内容)
对于根目录中的i:
打印i[0]。文本#文本

根据您的请求,您希望从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”标记,其中包含要检索的数据

根据您的请求,您希望从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”标记,其中包含要检索的数据

for循环正在返回一个包含一项的列表。如果要从中包含的url生成BeautifulSoup对象,请使用
BeautifulSoup(requests.get(company.contents[0]).text)
。我的意大利语不太好,所以我真的不知道你想从结果页面中获得什么编辑:我第一次把代码搞错了,现在应该可以了。你的for循环正在返回一个包含一个项目的列表。如果要从中包含的url生成BeautifulSoup对象,请使用
BeautifulSoup(requests.get(company.contents[0]).text)
。我的意大利语不太好,所以我真的不知道你想从结果页面中获得什么编辑:我第一次把代码弄错了,现在应该可以用了。我已经更新了它,以证明它确实可以用;)只需复制并运行代码……我已经对其进行了更新,以证明它确实有效;)只需复制并运行代码。。。