对于Web抓取我还比较陌生,我真的不知道为什么这不起作用,我认为这与我要抓取的表中的隐藏行有关。
我正在尝试通过for循环将相当简单的表提取到pandas数据框中。但是,当我尝试使用find_all('tr')提取行时,最终得到的是一个完全空的集。
这是我的代码:
url = 'https://pjammcycling.com/home;mode=search;sort=worldRank;view=table;asc=true;f1=France;dsply=100'
html = requests.get(url)
soup = BeautifulSoup(html.text, 'lxml')
table_body = soup.find('tbody')
rows = table_body.find_all('tr')
当我打印(行)时,我得到:
[]
我要使用的for循环是:
labels = []
data = []
for row in rows:
labels.append(str(row.find_all('td')[0].text))
data.append(str(row.find_all('td')[1].text))
cols = {'Field': labels, 'Data': data}
df = pd.DataFrame(cols)
任何帮助将不胜感激,因为我整个早晨一直将头撞在墙上,试图使它起作用:( 我的Google搜索都没有为我清除此问题
提前谢谢!
答案 0 :(得分:0)
检索到您的肢体为空。在浏览器中,它由javascript填充。这是原始html的摘录:
<tbody _ngcontent-sc18=""><!----></tbody>
它和BeautifulSoup一样没有用。也许您可以尝试:https://pythonprogramming.net/javascript-dynamic-scraping-parsing-beautiful-soup-tutorial/