python - 尝试使用 Beautiful Soup 或 ElementTree 从链接的迭代列表中抓取信息

标签 python xml web-scraping beautifulsoup screen-scraping

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

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

我认为我的语法有错误,我尝试使用 beautiful soup 和 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

非第三方:

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

任何意见都值得赞赏!谢谢。

最佳答案

你的语法没问题。您只需点击首页中的这些链接,米兰页面的外观如下:

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' block 即可。我不知道它们是否都按照一致的规则进行格式化,因为 milano 地址位于 class="riquandro_agenzia_off"的 div 下,如果其他子页面也以这种方式格式化,那么它应该可以工作。无论如何,这应该让你开始。希望能帮助到你。

关于python - 尝试使用 Beautiful Soup 或 ElementTree 从链接的迭代列表中抓取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20750595/

相关文章:

python - 快速映射/修改大量 Python 字典中的值?

Python - 在具有步长的范围之间生成随机实数

java - 你下一步怎么做?

jquery - 如何在 Pos Receipt (Odoo13) 中显示产品默认代码(内部引用)

html - 在 R 中使用 `read_html` 使用 `rvest` 时缺少元素

python - Scrapy 元素声明中的 IF 语句

python - 如何将系列或序列分配给 dask 数据框列?

xml - 如何将XML数据库导入HBASE

android - 约束布局TextView重叠

python - 我无法将 understat 数据抓取到 JSON