2014-09-26 48 views
0

我想從newyork時間獲得一組url(這是網頁),但我得到了一個不同的答案,我相信我給了一個正確的類,儘管它提取了不同的類。我ny_url.txt有 「http://query.nytimes.com/search/sitesearch/?action=click&region=Masthead&pgtype=SectionFront&module=SearchSubmit&contentCollection=us&t=qry900#/isis; http://query.nytimes.com/search/sitesearch/?action=click&region=Masthead&pgtype=SectionFront&module=SearchSubmit&contentCollection=us&t=qry900#/isis/since1851/allresults/2/BeautifulSoup不解析整個頁面的內容

這裏是我的代碼:

import urllib2 
import urllib 
from cookielib import CookieJar 
from bs4 import BeautifulSoup 
cj = CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
text_file = open('ny_url.txt', 'r') 
for line in text_file: 
    print line 
    soup = BeautifulSoup(opener.open(line)) 
    links = soup.find_all('div', attrs = {'class' : 'element2'}) 
    for href in links: 
     print href 
+0

Iam期待這個結果「http://topics.nytimes.com/top/reference/timestopics/organizations/i/isis/index.html?8qa,http://www.nytimes.com/2014/08/ 25/world/middleeast/isis-militants-capture-air-base-from-syrian-government-forces.html「 – 2014-09-26 20:35:43

+0

行可能包含'\ n'字符。試試'opener.open(line [: - 1])' – user3557327 2014-09-26 20:35:53

+0

這就是我得到的結果:根據你的建議進行編輯後......「http://query.nytimes.com/search/sitesearch/?action= click&region = Masthead&pgtype = SectionFront&module = SearchSubmit&contentCollection = us&t = qry900#/ isis

「 – 2014-09-26 20:40:01

回答

1

那麼它不是那麼簡單。

您正在查找的數據不在您urllib2下載的page_source中。

嘗試打印opener.open(line).read()您會發現要丟失的數據。

這是因爲,該網站正在另一個GET請求http://query.nytimes.com/svc/cse/v2pp/sitesearch.json?query=isis&page=1

其中URL中的查詢參數傳遞query=isispage=1

的數據獲取是JSON格式,嘗試打開上述網址在瀏覽器中手動。你會在那裏找到你的數據。

所以純pythonic的方式是調用此url並解析JSON以獲取所需內容。 不需要火箭科學 - 只需使用適當的鍵來解析字典。

OR

更簡單的方法是使用webdrivers像Selenium - 瀏覽網頁 - 和分析使用BeautifulSoup頁面的源代碼。這應該很容易獲取整個內容。

希望有所幫助。讓我知道你是否需要更多的見解。