Python知乎熱門話題爬取
阿新 • • 發佈:2018-12-11
本例子是參考崔老師的Python3網路爬蟲開發實戰寫的
看網頁介面:
熱門話題都在 explore-feed feed-item的div裡面
原始碼如下:
import requests from pyquery import PyQuery as pq url='https://www.zhihu.com/explore' #今日最熱 #url='https://www.zhihu.com/explore#monthly-hot' #本月最熱 headers={ 'User-Agent':"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5", } html=requests.get(url,headers=headers).text doc=pq(html) #print(doc) items=doc('.explore-feed.feed-item').items() for item in items: question=item.find('h2').text() #獲取問題 print(question) author=item.find('.author-link').text() #獲取作者 print(author) answer=pq(item.find('.content').html()).text() #獲取答案(老師寫的沒看懂,可能需要jquery知識) print(answer) print('===='*10) answer1=item.find('.zh-summary').text() #自己寫的獲取答案。。。 print(answer1) #第一種寫入方法 file=open('知乎.txt','a',encoding='utf-8') file.write('\n'.join([question,author,answer])) file.write('\n'+'****'*50+'\n') file.close() #第二種寫入方法 不需要寫關閉方法 with open('知乎.txt','a',encoding='utf-8') as fp: fp.write('\n'.join([question, author, answer])) fp.write('\n' + '****' * 50 + '\n')
執行結果如下:
不過比較奇怪的地方是 url為今日最熱和本月最熱 所爬取的結果一模一樣。。而且都只能爬下五個div裡面的東西,可能是因為知乎是動態介面。需要用到selenium吧
還有就是
answer=pq(item.find('.content').html()).text()
#獲取答案(老師寫的沒看懂,可能需要jquery知識)
這行程式碼沒有看懂。。。。
還得學習jQuery