1. 程式人生 > >用Python爬取更加有價值的文章

用Python爬取更加有價值的文章

前言

在瞭解了python的語法之後,我就開始嘗試寫第一個爬蟲,並且在網上也找了很多教程,發現有幾個模組在Python爬取網頁時,特別常用,例如:BeautfulSoup,Requests, csv, reBeautfulSoup是一個方便解析html的模組,具體使用可以看Beautiful Soup 4.2.0 中文文件Requests是一個模擬傳送請求的模組,具體使用可看Requests的開發介面。關於後兩個是Python自帶的模組,cvs的作用是資料的儲存,一般是.cvs檔案,rePython中的正則表示式模組,一般用於對資料的再處理,兩者的具體使用可看The Python Standard Library

網頁爬蟲流程

在瞭解了爬蟲需要的模組後,我們就來學習一下,做一個簡單的網頁爬蟲的流程一般是什麼:

在這裡我們的小程式的流程基本上是一致的。

爬蟲

至於爬什麼網站,我選擇了爬取簡書,你也可以選取其他一些網站,像知乎豆瓣等等。在簡書中有個模組是@IT·網際網路,我們就選擇它了,在它之中有個“熱門”選項,我們就來爬取它其中的內容,獲取熱門文章的“題目”,“閱讀人數”,“連結地址”,“評論條數”,“喜歡人數”,“打賞人數”,這樣我們就可以通過文章的“閱讀人數”,“評論條數”,“喜歡人數”,“打賞人數”選擇排序,選擇更加有價值的文章閱讀。

開啟“開發者工具”,在“network”下會點選“熱門”,第一個裡面就包含請求的url

地址http://www.jianshu.com/c/V2CqjW?order_by=top

清空network中的資訊,我們再滑動滾動條,因為是ajax請求,所以我們會在XHR選項發現一個帶有引數的url地址http://www.jianshu.com/c/V2CqjW?order_by=top&page=2,後面的page=2就是我們需要自己設定的,可以讓它遞增,獲取更多內容。

接下來我們因為需要用BeautfulSoup的通過css樣式獲取html的方法,所以我們需要找到定位的位置,獲取它的css樣式。這時我們需要開啟Elements選項卡,獲取到查詢資訊的css樣式,其中每個li

標籤都是一篇文章。

接下來我們就來編寫程式了,編寫順序可按照以下步驟進行:

  1. 建儲存檔案
  2. 設定正則表示式(只要數字)
  3. 提供url地址
  4. 設定css選擇器
  5. 發請求,解析html
  6. 得到特定資訊
  7. 寫入檔案
  8. 關閉檔案

具體程式碼如下:

from tinydb import TinyDB
import csv

#建儲存檔案
db = TinyDB('collection_cxy_hot2.json')
csvfile = open("cxy_hot2.csv", "w", encoding='utf-8') 

fieldnames = ["title", "href", "people", "commmit", "like", "money"]#設定表頭
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()

import requests
from bs4 import BeautifulSoup
import re
reg = re.compile('(\d+)')#設定正則表示式,只要數字

#提供url地址
base_url = "http://www.jianshu.com"
hot_url="http://www.jianshu.com/c/V2CqjW?order_by=top&page=%d"
add_url=1

#設定css選擇器
title_selector = "#list-container .title"
people_selector = "div[class='meta'] > a"
commit_selector = "div[class='meta'] > a"
like_selector = "div[class='meta'] > span"
money_selector = "div[class='meta'] > span"

while(add_url < 300):
    try:
        #發請求,解析html
        first_page = requests.request('get', hot_url% add_url).content
        soup = BeautifulSoup(first_page, "lxml")

        #得到特定資訊
        collection_total = [i.get_text() for i in soup.select(title_selector)]
        if not collection_total : break#沒資訊時,break
        print(collection_total)
        collection_href = [(base_url+i.get('href')) for i in soup.select(title_selector)]
        collection_pepele = [int(reg.findall(i.get_text())[0]) for i in soup.select(people_selector)][::2]#獲取奇數項
        collection_commit = [int(reg.findall(i.get_text())[0]) for i in soup.select(commit_selector)][1::2]#獲取偶數項
        collection_like = [int(reg.findall(i.get_text())[0]) for i in soup.select(like_selector)][::2]
        collection_money = [int(reg.findall(i.get_text())[0]) for i in soup.select(money_selector)][1::2]

        for c,d,e,f,g,h in zip(collection_total, collection_href, collection_pepele, collection_commit, collection_like, collection_money):
            collection_dict = {"title":c, "href":d, "people":e, "commmit":f, "like":g, "money":h}
            #寫入檔案
            db.insert(collection_dict)
            writer.writerow(collection_dict)
        add_url += 1#爬下一頁
    except Exception as t:
        print(t)
        break
csvfile.close()#關閉檔案

然後執行爬蟲,驗證結果,結果正確。

得到的.csv檔案可能用Excel開啟會亂碼,所以在這裡提供一個可以將.json檔案轉為格式良好的.csv檔案的網站:JSON to CSV Converter Online,把.json檔案傳上去,下載下來即可。


我們開啟下載檔案,就可以通過“閱讀人數”,“評論條數”,“喜歡人數”,“打賞人數”選擇排序,選擇更加有價值的文章閱讀了。

至此一個簡單的爬蟲小程式就完成了。

後續

因為這是我的第一個爬蟲程式,程式碼之中難免會有些選取規則不合適或命名不規範,希望大家能夠多多包涵,多多指正。

相關推薦

Python更加價值文章

前言 在瞭解了python的語法之後,我就開始嘗試寫第一個爬蟲,並且在網上也找了很多教程,發現有幾個模組在Python爬取網頁時,特別常用,例如:BeautfulSoup,Requests, csv, re。BeautfulSoup是一個方便解析html

微信PK10平臺開發與python微信公眾號文章

網址 谷歌瀏覽器 pytho google http 開發 微信 安裝python rom 本文通過微信提供微信PK10平臺開發[q-21528-76294] 網址diguaym.com 的公眾號文章調用接口,實現爬取公眾號文章的功能。註意事項 1.需要安裝python s

python道翻譯遇到反,3分鐘反反繞過其反

利用有道翻譯的介面,自制一個翻譯程式 檢視其翻譯介面,發現post請求需要傳很多引數,而且經過測驗,satl,sigh屬於動態生成的,遇到這種問題怎麼辦?當然有時間的情況下,可以去研究這些引數在哪個響應中返回,或者怎麼構造,但是一般在工作中我們可能需求來了,不

python微信公眾號文章

本文通過微信提供的公眾號文章呼叫介面,實現爬取公眾號文章的功能。 # -*- coding: utf-8 -*- from selenium import webdriver import time import json import reques

python文章連結並分類

環境: OS:win10 x64 Python:3.5.1 PyCharm:5.0.3 為了方便學習,根據關鍵字過濾資料爬取下來,並做分類。 爬取jobbole import requests from bs4 import BeautifulSoup import

Python網易雲音樂上的Hip-hop歌單,分析rapper如何押韻

line gone 謠言 大致 -i 態度 大眾 其中 當前 緣起 《中國有嘻哈》這個節目在這個夏天吸引了無數的目光,也讓嘻哈走進了大眾的視野。作為我今年看的唯一一個綜藝節目,它對我的影響也蠻大。這個夏天,我基本都在杭州度過,在上下班的taxi上,我幾乎都在刷這個節目,最後

python微博數據並生成詞雲

font 意思 extra 很多 返回 json 自己 技術分享 pre 很早之前寫過一篇怎麽利用微博數據制作詞雲圖片出來,之前的寫得不完整,而且只能使用自己的數據,現在重新整理了一下,任何的微博數據都可以制作出來,放在今天應該比較應景。 一年一度的虐汪節,是繼續蹲在角落默

pythoni春秋的課程

out clas sse dir quest index 影響 png 繼續 看課中內容是用get請求進行爬取課程,自己實踐的時候發現已經被改成post請求了,下面開始 打開課程頁面 我用的火狐,然後就是F12,點擊網絡,可能會有很多包,但不影響,點擊刪除就行,然後點擊第二

Python 微信好友,最後發現一個大秘密

代碼 我們 同學 strong 分享 簽名 ast ron tps 前言 你身處的環境是什麽樣,你就會成為什麽樣的人。現在人們日常生活基本上離不開微信,但微信不單單是一個即時通訊軟件,微信更像是虛擬的現實世界。你所處的朋友圈是怎麽樣,慢慢你的思想也會變的怎麽樣。最近在學習

怎麽Python抖音小視頻? 資深程序員都這樣的(附源碼)

aid option rip size with open url var mark open 簡介 抖音,是一款可以拍短視頻的音樂創意短視頻社交軟件,該軟件於2016年9月上線,是一個專註年輕人的15秒音樂短視頻社區。用戶可以通過這款軟件選擇歌曲,拍攝15秒的音樂短視頻

分手後,小夥怒Python上萬空姐照片,贏校花選舉大賽!

代碼 美女圖片 pst caption alt .... 不出 ima bee 首先展示下Python爬取到的成果: 我做什麽都要爭第一,這次的校花投票選舉大賽也不例外,雖然我是個男的......但是我看到了前女友竟然已經有三百多票排到第三名了,我怎麽能眼睜

誰當年還沒看過幾本小說!我Python全站的的小說!

nec 打印 b數 技術分享 mon 結果 鏈接 ons ide 然後再將請求發送出去,定義變量response,用read()方法觀察,註意將符號解碼成utf-8的形式,省的亂碼: 打印一下看結果: 看到這麽

項目實戰!我Python了14年所有的福彩3D信息

下載器 rap 寫入excel url req 理論 ola text port 前兩天,在網上看到一個有意思的問題:×××靠譜麽?為什麽還有那麽多的人相信×××? 暫且不說,×××是否靠譜?×××也分人而異,江湖上騙術很多,有些甚至會誤以為×××的準確度可以很高,這些操盤

python股票資料的一點小結

一、背景 網上對於爬取股票資料有相對完善的教程。不過大部分教程都是隻能夠爬取一段時間的股票資料,針對某一隻股票的歷史資料爬取,目前還沒有看到比較好的教程。下面對近期學的東西進行一點點小結。 二、股票資料爬取網站 網上更多推薦的是東方財富的股票資料,連結為:http://quote.eas

哪些網站值得python爬蟲獲取很價值的資料

 ^___^一個程式設計師的淘寶店:點選開啟連結,助你快速學習python技術的一臂之力,不喜歡看廣告的請忽略這條! 0、IT桔子和36Kr在專欄文章中(http://zhuanlan.zhihu.com/p/20714713),抓取IT橘子和36Kr的各公司的投融資資料

python美女圖片

import urllib.request import os for i in range(2000, 2400): if not os.path.exists(‘tupian/’ + str(i)): os.makedirs(‘tupian/’ + str(i)) for j in

python拉勾網招聘資訊並以CSV檔案儲存

爬取拉勾網招聘資訊 1、在網頁原始碼中搜索資訊,並沒有搜到,判斷網頁資訊使用Ajax來實現的 2、檢視網頁中所需的資料資訊,返回的是JSON資料; 3、條件為北京+資料分析師的公司一共40087家,而實際拉勾網展示的資料只有 15條/頁 * 30頁 = 450條,所以需要判斷

下午不知道吃什麼?Python美團外賣評論幫你選餐!

一、介紹 朋友暑假實踐需要美團外賣APP評論這一份資料,一開始我想,這不就抓取網頁原始碼再從中提取資料就可以了嗎,結果發現事實並非如此,情況和之前崔大講過的分析Ajax來抓取今日頭條街拍美圖類似,都是通過非同步載入的方式傳輸資料,不同的是這次的是通過JS傳輸,其他的基本思路基本一致,希望那些資料

python某個詞條的原始碼

簡單例子:在百度中輸入關鍵詞,並爬取該網頁的原始碼 #-*- coding:utf-8-*- import urllib #負責url編碼處理 import urllib2 url = "http://www.baidu.com/s" word = {"wd":"冼焯庭"}

Python手機APP

本文轉自:https://mp.weixin.qq.com/s?__biz=MzAxMjUyNDQ5OA==&mid=2653558162&idx=1&sn=73ae2ee5d2453773bceec078e39ca0ed&chksm=806e3b2fb71