【问题标题】:Trying to scrape information from an iterated list of links using Beautiful Soup or ElementTree尝试使用 Beautifulsoup 或 ElementTree 从链接的迭代列表中抓取信息
【发布时间】:2014-01-12 02:07:22
【问题描述】:

我正在尝试为these addresses 抓取链接的xml database 列表。 (第二个链接是一个示例页面,实际上包含一些地址。许多链接没有。)

我能够检索我想爬过的初始链接列表,但我似乎无法更进一步提取我正在寻找的最终信息(地址)。

我认为我的语法有错误,我尝试使用漂亮的汤和 Python 包含的库来抓取它,但它不起作用。

汤:

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

非第 3 方:

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

感谢任何输入!谢谢。

【问题讨论】:

  • 那么您需要关注这些链接并提取这些链接下的可用信息吗?您只需为此链接发出一系列新的获取请求,然后在那里解析信息。对吗?

标签: python xml web-scraping beautifulsoup screen-scraping


【解决方案1】:

你的语法没问题。您只需点击首页中的这些链接,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)
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

要获取所有地址,您只需删除代码中的 if 'milano' 块。我不知道它们是否都按照连贯的规则格式化,因为米兰地址在 div 下,class="riquandro_agenzia_off",如果其他子页面也以这种方式格式化,那么它应该可以工作。无论如何,这应该让你开始。希望能帮助到你。

【讨论】:

  • 非常感谢!这非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多