您好,我正在尝试获取此页面上每个会计师事务所的名称、地址和电话号码:
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/