python - 用Python和漂亮的汤抓取一个凌乱的网页

标签 python html css-selectors beautifulsoup html-parsing

您好,我正在尝试获取此页面上每个会计师事务所的名称、地址和电话号码:

http://accountantlist.com.au/x123-Accountants-in-Sydney.aspx?Page=0

我无法将树导航到信息所在的位置。

在 Python 中使用“beautiful soup”和“requests”,这就是我尝试获取公司名称的方式:

import bs4
import requests

page = request.get('http://accountantlist.com.au/x123-Accountants-in-Sydney.aspx?Page=0')
soup = bs4.BeautifulSoup(page.text)

name = soup.select('......')

所以基本上我只是沿着我使用 chrome 开发者工具找到的选择器沿着树向下走:

#ctl00_ContentPlaceHolder1_dgLawyers > tbody > tr:nth-child(2) > td > 表 > tbody > tr:nth-child(1) > td:nth-child(1) > a

但是美汤不会接受这条路。我也尝试过不使用“>”符号。

我尝试的第二种方法是只查看树并从正文向下键入 css 选择器到我想要的位置,如下所示:

soup.select('body table tbody tr ... 等')

但这也行不通。

我想最终这个问题可以归结为我怎样才能写出一条 BeautifulSoup 会接受的路径。有人能告诉我如何解决这个问题吗?

感谢任何帮助。

最佳答案

id 获取包含公司的表,并迭代其中的每个:

import bs4
import requests

page = requests.get('http://accountantlist.com.au/x123-Accountants-in-Sydney.aspx?Page=0')
soup = bs4.BeautifulSoup(page.content)

for company in soup.select('table#ctl00_ContentPlaceHolder1_dgLawyers tr > td > table'):
    name = company.a.text
    number = company.tr.find_all('td')[-1].text
    address = company.find_all('tr')[-1].td.text

    print {'name': name, 'number': number, 'address': address}

打印:

{'address': u'Level 4. 36 Carrington St Sydney. NSW 2000', 'name': u'A D Hill & Co', 'number': u'0292991733'}
{'address': u'Suite 103, Level 1. 84 Pitt Street Sydney. NSW 2000', 'name': u'A2Z Insolvency Solutions', 'number': u'02 8065 6607'}
{'address': u'810 George St Sydney. NSW 2000', 'name': u'AAA iPro Services Australia', 'number': u'1300554959'}
{'address': u'Level 39. 2 Park St Sydney. NSW 2000', 'name': u'AccFin Services', 'number': u'0290047825'}
...

关于python - 用Python和漂亮的汤抓取一个凌乱的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27182139/

相关文章:

css - CSS 选择器中 + 运算符的优先级是多少?

python - 改变一个扭曲的列表 : whats going on behind the scenes

python - 在 Pandas 中,如何将一系列 float 或无整数转换为带整数的字符串

python - 将文本文件的列转换为科学记数法

javascript - Django 问题 : manage. py runserver 错误信息

CSS 选择器。我一定没有正确理解这一点

python - 用 Pandas 数据框中尽可能少的日期填充缺失的日期值

javascript - 带有 jquery 的子菜单无法正常工作

javascript - 事件类未打开 JS 导航点

css - 使用 :nth-child(n + x) pseudo class 内的变量