我正在尝试从网址中抓取表格,但是我只能抓取
通过id
而不是class
进行访问,尽管只有一个这样的类。
我的格式有问题吗?
我已经尝试过find
或find_all
和类似的变体,但是我似乎无法
弄清楚为什么我找回一个空的list
或无。
url = 'https://www.us-proxy.org/'
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
table =soup.find("table" , { "class" : "table table-striped table-bordered dataTable"} )
这是我要刮的部分
class="table table-striped table-bordered dataTable"
答案 0 :(得分:0)
也许为类尝试一个数组?
soup.find('table', {'class':['table','table-striped','table-bordered','dataTable']}
答案 1 :(得分:0)
您不能选择该表,因为类dataTable
是由Javascript动态添加的。为了选择标签,我将使用CSS选择器,此脚本选择您想要的表:
import requests
from bs4 import BeautifulSoup
url = 'https://www.us-proxy.org/'
soup = BeautifulSoup(requests.get(url).text, 'lxml')
print(soup.select('table.table.table-striped.table-bordered'))
打印:
[<table cellspacing="0" class="table table-striped table-bordered" id="proxylisttable" width="100%"><thead><tr><th>IP Address</th><th>Port</th><th>Code</th><th class="hm">Country</th><th>Anonymity</th><th class="hm">Google</th><th class="hx">Https</th><th class="hm">Last Checked</th></tr></thead><tbody><tr><td>47.90.246.198</td><td>3128</td><td>US</td><td class="hm">United States</td><td>elite proxy</td><td class="hm">no</td>
...等等。
答案 2 :(得分:0)
已对课程进行了评论。看看返回的HTML:有一个ID应该是您选择的首选方法,因为它更快,更可能唯一。
import pandas as pd
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://www.us-proxy.org/')
soup = bs(r.content, 'lxml')
table = soup.select_one('#proxylisttable')
table = pd.read_html(str(table))[0]
print(table)