Python爬取今日頭條江歌案新聞


今天學習總結下爬取今日頭條江歌案的新聞,今天頭條用到了Ajax技術,所以用傳統的索取網頁元素的方法是獲取不到內容的,之前我寫了篇爬取拉鉤上海Python職位信息,有興趣的可以點開看看!

第一步

用Chrome打開網頁toutiao.com/search/?,打開開發者工具,紅框內的信息是我們需要的,我們要抓取的數據就在data一欄中

我們再觀察下網頁信息,把網頁不斷的忘下翻,可以看到第一頁是offset=0,往下翻過一個節點就是20,40,60這樣遞增上去

好了,基本的分析完了,準備動手寫代碼

# -*- coding:utf-8 -*-import requestsfrom urllib.parse import urlencodefrom requests.exceptions import RequestExceptiondef get_data(): data = { offset: 0, format: json, keyword: 江歌, autoload: true, count: 20, cur_tab: 1, from:search_tab } # urlencode(data)就是鏈接的解析 url = https://www.toutiao.com/search_content/? + urlencode(data) response = requests.get(url) try: if response.status_code == 200: return response.text return None except RequestException: print(data is error) return Nonedef main(): html = get_data() print(html)if __name__ == __main__: main()

運行下代碼,返回了這樣的數據

第二步

解析數據

我們可以看下data一欄下的網頁數據

def parse_data(html): data = json.loads(html) # JSON 字元串解碼為 Python 對象 if data and data in data.keys(): news_list =[] for item in data.get(data): news = { title: item.get(title), # 使用get()方法避免了部分keys不存在時報錯 url: item.get(url), } news_list.append(news) return news_list

解析後再次運行代碼,這就是我們要的數據了

第三步

可以爬下單頁數據了,現在來看下怎麼爬取多頁面

第一步網頁分析的時候,offset的數據是抓取多頁面內容的關鍵,我們先創建一個配置文件config.py,再創建多進程調用map方法

GROUPSTART = 1

GROUPEND = 20

groups = [x * 2 for x in range(GROUP_START, GROUP_END + 1)] pool = Pool(8) pool.map(main, groups) pool.close() pool.join() print(ALl is done!)

最後運行代碼,開啟了多進程後爬取的效率可以說是坐了火箭

完整代碼在GitHub

GitHub?

github.com

Treehl - 簡書?

www.jianshu.com圖標

歡迎訪問我的博客

Treehl的博客?

family-treesy.github.io圖標
推薦閱讀:

輪帶逛終極版! 抓取輪子哥(vczh)全部知乎動態
初識Scrapy,在充滿爬蟲的世界裡做一個好公民
python爬蟲常用庫之requests詳解
python爬蟲學習記錄(1)
回顧一個月的爬蟲學習

TAG:Python | python爬蟲 | Python入門 |