我想从彼此获取表格数据,但没有标记可供选择。
import urllib
import urllib.request
import requests
from bs4 import BeautifulSoup
source = ['http://lotto.auzonet.com/biglotto/list_' + str(i + 1) + '_all.html' for i in range(2003, 2016)]
for link in source:
visit_request = urllib.request.urlopen(link)
visit_response = visit_request.read()
visit_soup = BeautifulSoup(visit_response, 'html.parser', from_encoding='utf-8')
for ultag in visit_soup.find_all('td', {'class' : 'history_view'}):
for table in ultag.find_all('table', {'class' : 'history_view_table'}):
#table資料 ......
答案 0 :(得分:0)
你想要的是 history_view_table 中第二个tr里面的文字, select_one('table.history_view_table tr:nth-of-type(2)')会抓住第二个 tr ,调用 .find_all(text = True),它将获取所有文本,我们使用过滤新行等等。如果s.strip( ):
data = [s.strip() for s in visit_soup.select_one('table.history_view_table tr:nth-of-type(2)').find_all(text=True) if s.strip()]
那应该给你你想要的东西:
In [1]: import urllib.request
In [2]: from bs4 import BeautifulSoup
In [3]: visit_request = urllib.request.urlopen("http://lotto.auzonet.com/biglotto/list_2004_all.html")
In [4]: visit_response = visit_request.read()
In [5]: visit_soup = BeautifulSoup(visit_response, 'html.parser', from_encoding='utf-8')
In [6]: [s.strip() for s in visit_soup.select_one('table.history_view_table tr:nth-of-type(2)').find_all(text=True)
...: if s.strip()]
Out[6]:
['093104',
'2004-12-30',
'(星期四)',
'落球順序:',
'03',
'18',
'33',
'34',
'43',
'49',
'大小順序:',
'03',
'18',
'33',
'34',
'43',
'49',
'02',
'$282,609,200']
包括'$ 282,609,200'你没有在你的图片中突出显示但是它在下一张桌子之前,所以我认为这是一个疏忽。