2017-10-21 105 views
0

我正在學習使用python進行網頁抓取,但無法獲得所需的結果。下面是我的代碼和輸出Web Scraping Python(BeautifulSoup,Requests)

代碼

import bs4,requests 
url = "https://twitter.com/24x7chess" 
r = requests.get(url) 
soup = bs4.BeautifulSoup(r.text,"html.parser") 
soup.find_all("span",{"class":"account-group-inner"}) 
[] 

這裏是我試圖刮

https://i.stack.imgur.com/tHo5S.png

我一直得到一個空數組。請幫忙。

+0

你爲什麼不使用Twitter官方的API?網絡報廢對於Twitter來說並不理想。 – Saharsh

+0

其實我剛剛開始這個,這就是爲什麼我要走更多的全面路徑,而不是隻關注Twitter API –

回答

0

試試這個。它會給你你可能尋找的物品。 SeleniumBeautifulSoup很容易處理。我已經這樣寫了。這裏是。

from bs4 import BeautifulSoup 
from selenium import webdriver 

driver = webdriver.Chrome() 

driver.get("https://twitter.com/24x7chess") 
soup = BeautifulSoup(driver.page_source,"lxml") 
driver.quit() 
for title in soup.select("#page-container"): 
    name = title.select(".ProfileHeaderCard-nameLink")[0].text.strip() 
    location = title.select(".ProfileHeaderCard-locationText")[0].text.strip() 
    tweets = title.select(".ProfileNav-value")[0].text.strip() 
    following = title.select(".ProfileNav-value")[1].text.strip() 
    followers = title.select(".ProfileNav-value")[2].text.strip() 
    likes = title.select(".ProfileNav-value")[3].text.strip() 
    print(name,location,tweets,following,followers,likes) 

輸出:

akul chhillar New Delhi, India 214 44 17 5 
+0

非常感謝。我已經開始使用Selenium了,它的功能很神奇 –

+0

如果它有效,請務必將其標記爲答案。謝謝。 – SIM

+0

我也可以在這裏使用find_all方法而不是使用select? –

1

像Twitter這樣的網站會動態加載內容,這有時候取決於您使用的瀏覽器等。由於動態加載,網頁中可能會有一些元素被延遲加載,這意味着DOM會動態膨脹,取決於用戶的操作,您在瀏覽器中檢查的標記Inspect元素,會檢查完全動態膨脹的HTML,但是您使用請求獲得的響應,HTML膨脹,或者是一個簡單的DOM等待動態加載元素用戶在從請求模塊提取時的行爲是None。

我建議你使用硒webdriver刮動態JavaScript網頁。

+0

嗨。感謝您抽出時間。我注意到了一些我只能查看視圖源中的數據而不是我在網站上檢查的數據的東西。你可以看看這個嗎? –

+0

@akulchhillar與請求您只能獲取靜態DOM,對於需要使用['selenium'](http://selenium-python.readthedocs.io/)模塊 – ZdaR

+0

謝謝。我最近學習硒。順便說一句,如果我使用urllib來刪除動態網站? –