您好我正在尝试获取此页面上每家会计师事务所的姓名,地址和电话号码:
http://accountantlist.com.au/x123-Accountants-in-Sydney.aspx?Page=0
我无法将树导航到信息所在的位置。
在Python中使用'美味汤'和'请求',这就是我试图获取公司名称的方式:
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 > table > tbody > tr:nth-child(1) > td:nth-child(1) > a
我尝试的第二种方法是只看树,然后输入css选择器,从身体到我想要的地方:
soup.select('body table tbody tr ... etc')
但这也不起作用。
我想最后这个问题归结为我怎样才能写出一条美丽的汤会接受的道路。有人可以解释我如何解决这个问题吗?
感谢任何帮助。
答案 0 :(得分:2)
通过id
获取公司的表格并迭代内部的每个table
:
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'}
...