iT邦幫忙

0

python爬蟲問題

大家好
我想詢問爬蟲問題再麻煩各位高手解答
import requests
from bs4 import BeautifulSoup
mlb_url='https://www.baseball-reference.com/boxes/NYN/NYN202007250.shtml'
headers = {"Agent-User": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"}

res=requests.get(mlb_url,headers=headers)
res.encoding = 'utf8'
html_doc=res.text
#print(html_doc)
soup=BeautifulSoup(res.text,'lxml')
#print(soup.prettify())
#print(soup.select("tfoot > tr > td"))
print(soup.select("#div_AtlantaBravesbatting.table_container is_setup "))
我用了很多方式可是他print出來都是[]空的
可是我明明是照網站的html位置找的可是就是回傳空值
想請問各位還有甚麼方法能把表格爬下來嗎?
再麻煩各位解惑

你的網址是錯的,裡面不包含你要select的參數
將資料取出 並 存成 html 檔, 方便您分析資枓內容
```
import urllib.request as req
import bs4
url="https://www.baseball-reference.com/boxes/NYN/NYN202007250.shtml"

request=req.Request(url, headers={
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"
})
with req.urlopen(request) as response:
data=response.read().decode("utf-8")

with open("data.html", mode="w", encoding="utf-8") as fObj:
fObj.write(data)
```

1 個回答

0
z655062
iT邦新手 5 級 ‧ 2021-02-08 11:10:48
最佳解答

畫面上的table 適用 js 產生的 所以你才抓不到八
ctrl + shift + P disable javascript
會發現table 不見了
不過資料都在all_AtlantaBravesbatting的註解裡面

for item in soup.select("#all_AtlantaBravesbatting")[0].contents:

    if 'div_AtlantaBravesbatting' in item:
        print(item)

就能取到資料了

9a715072 iT邦新手 5 級 ‧ 2021-02-22 20:06:17 檢舉

非常感謝您的解答
我有嘗試用select找裡面tfoot標籤的資料,可是都沒有成功
請問有其他方法可以直接取出tfoot標籤裡的資料就好嗎?
再麻煩各位大大解答 感謝

z655062 iT邦新手 5 級 ‧ 2021-03-05 09:40:50 檢舉
for item in soup.select("#all_AtlantaBravesbatting")[0].contents:

    if 'div_AtlantaBravesbatting' in item:
        print(item)
        
        asoup = BeautifulSoup(item)
        
        print(asoup.find('tfoot'))

再轉一次bs4

我要發表回答

立即登入回答