網絡爬蟲--14.【糗事百科實戰】

文章目錄

  • 一. 要求
  • 二. 參考代碼

一. 要求

爬取糗事百科段子,假設頁面的URL是 http://www.qiushibaike.com/8hr/page/1

  1. 使用requests獲取頁面信息,用XPath / re 做數據提取

  2. 獲取每個帖子里的用戶頭像鏈接、用戶姓名、段子內容、點贊次數和評論次數

  3. 保存到 json 文件內

二. 參考代碼

#coding=utf-8
import requests
from retrying import retry
from lxml import etreeclass Qiubai_spider():def __init__(self):self.url = "http://www.qiushibaike.com/8hr/page/{}/"self.headers = {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}@retry(stop_max_attempt_number=5) #調用retry,當assert出錯時候,重復請求5次def parse_url(self,url):response = requests.get(url,timeout=10,headers=self.headers) #請求urlassert response.status_code==200  #當響應碼不是200時候,做斷言報錯處理print(url)return etree.HTML(response.text) #返回etree之后的htmldef parse_content(self,html):item_temp = html.xpath("//div[@class='article block untagged mb15']")print(len(item_temp))for item in item_temp:#獲取用戶頭像地址avatar = item.xpath("./div[1]/a[1]/img/@src")[0] if len(item.xpath("./div[1]/a[1]/img/@src"))>0 else None#為頭像地址添加前綴if avatar is not None and not avatar.startswith("http:"):avatar = "http:"+avatarprint(avatar)name = item.xpath("./div[1]/a[2]/h2/text()")[0] #獲取用戶名print(name)content = item.xpath("./a[@class='contentHerf']/div/span/text()")[0] #獲取內容print(content)star_number = item.xpath("./div[@class='stats']/span[1]/i/text()")[0] #獲取點贊數print(star_number)comment_number = item.xpath("./div[@class='stats']/span[2]/a/i/text()")[0] #獲取評論數print(comment_number)print("*"*100)def run(self):'''函數的主要邏輯實現'''url = self.url.format(1) #獲取到urlhtml = self.parse_url(url) #請求urlself.parse_content(html) #解析頁面內容并把內容存入內容隊列if __name__ == "__main__":qiubai = Qiubai_spider()qiubai.run()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

bzoj 5369: [Pkusc2018]最大前綴和

Description 小C是一個算法競賽愛好者,有一天小C遇到了一個非常難的問題:求一個序列的最大子段和。 但是小C并不會做這個題,于是小C決定把序列隨機打亂,然后取序列的最大前綴和作為答案。 小C是一個非常有自知之明的人&#xff0c…

微軟:軟件帝王的復興之路

可以說在過去的兩個月IT界所發生的一切都非同尋常,喬布斯辭職了,Google把Motorola并購了,微軟炫了一下Windows 8,還宣布開始用ARM了,Google開始和英特爾合作了,AT&T與T-Mobile的并購也在緊密鑼鼓進行中…

jdbc和odbc區別

ODBC(Open Database Connectivity,開放數據庫互連)是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關數據庫的一個組成部分,它建立了一組規范,并提供了一組對數據庫訪問的標準API(應用程序編程接…

事務相關、不可重復讀與幻讀的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 事務內嵌套事務: 1) 都用spring事務時,取決spring采用的事務的隔離級別。 這個默認隔離級別是與具體的數據…

onload事件

onload事件它只支持少量標簽<body>, <frame>, <iframe>, <img>, <input type"image">, <link>, <script>, <style> 不支持<div>,<p>標簽等 所以&#xff0c;在div使用onload事件時該怎么辦呢。。。轉載…

Eclipse GBK批量轉UTF-8插件(轉)

最近需要把Android項目轉Android Studio&#xff0c;由于之前是eclipse開發&#xff0c;而且坑爹的是編碼還是GBK的&#xff0c;轉到Android Studio中文都是亂碼&#xff0c;如果一個文件一個文件ctrlc的話&#xff0c;想想就累&#xff0c;幾經Google&#xff0c;發現一個很好…

網絡爬蟲--15.【糗事百科實戰】多線程實現

文章目錄一. Queue&#xff08;隊列對象&#xff09;二. 多線程示意圖三. 代碼示例一. Queue&#xff08;隊列對象&#xff09; Queue是python中的標準庫&#xff0c;可以直接import Queue引用;隊列是線程間最常用的交換數據的形式 python下多線程的思考 對于資源&#xff0…

淺談:國內軟件公司為何無法做大做強?

縱覽,國內比較大的軟件公司(以下統一簡稱"國軟"),清一色都是做政府項目的(他們能做大的原因我就不用說了吧),真正能做大的國軟又有幾家呢?這是為什么呢? 今天風吹就給大家簡單分析下: 1."作坊"式管理 "作坊"往往是效率最高的,國軟幾乎都是從作…

Java SE、Java EE、Java ME三者的區別

說得簡單點 Java SE 是做電腦上運行的軟件。 Java EE 是用來做網站的-&#xff08;我們常見的JSP技術&#xff09; Java ME 是做手機軟件的。 1. Java SE&#xff08;Java Platform&#xff0c;Standard Edition&#xff09;。Java SE 以前稱為 J2SE。它允許開發和部署在桌面、…

FileBeats安裝

FileBeats安裝 FileBeats官方下載鏈接&#xff1a; https://www.elastic.co/downloads/beats/filebeat 也可以直接使用以下命令下載&#xff08;文章下載目錄一概為/home/tools, 解壓后文件夾放到 /home/apps下&#xff09; wget https://artifacts.elastic.co/downloads/beats…

《程序員代碼面試指南》第三章 二叉樹問題 二叉樹節點間的最大距離問題

題目 二叉樹節點間的最大距離問題 java代碼 package com.lizhouwei.chapter3;/*** Description:二叉樹節點間的最大距離問題* Author: lizhouwei* CreateDate: 2018/4/16 19:33* Modify by:* ModifyDate:*/ public class Chapter3_20 {public int maxDistance(Node head) {int[…

MySQL中函數CONCAT及GROUP_CONCAT 對應oracle中的wm_concat

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、CONCAT&#xff08;&#xff09;函數 CONCAT&#xff08;&#xff09;函數用于將多個字符串連接成一個字符串。 使用數據表Info作為…

網絡爬蟲--16.BeautifulSoup4

文章目錄一. BeautifulSoup4二. 解析實例三. 四大對象種類1. Tag2. NavigableString3. BeautifulSoup4. Comment四. 遍歷文檔樹1.直接子節點 &#xff1a;.contents .children 屬性1). .contents2). .children2. 所有子孫節點: .descendants 屬性3. 節點內容: .string 屬性五. …

Intel MKL 多線程設置

對于多核程序&#xff0c;多線程對于程序的性能至關重要。 下面&#xff0c;我們將對Intel MKL 有關多線程方面的設置做一些介紹&#xff1a; 我們提到MKL 支持多線程&#xff0c;它包括的兩個概念&#xff1a; 1>MKL 是線程安全的&#xff1a; MKL在設計時&#xff0c;就保…

【LA3415 訓練指南】保守的老師 【二分圖最大獨立集,最小割】

題意 Frank是一個思想有些保守的高中老師。有一次&#xff0c;他需要帶一些學生出去旅行&#xff0c;但又怕其中一些學生在旅行中萌生愛意。為了降低這種事情發生的概率&#xff0c;他決定確保帶出去的任意兩個學生至少要滿足下面四條中的一條。 1.身高相差大于40厘米 2.性別相…

行車記錄儀穩定方案:TC358778XBG:RGB轉MIPI DSI芯片,M-Star標配IC

原廠&#xff1a;Toshiba型號&#xff1a;TC358778XBG功能&#xff1a;TC358778XBG是一顆將RGB信號轉換成MIPI DSI的芯片&#xff0c;最高分辨率支持到1920x1200&#xff0c;其應用圖如下&#xff1a;產品特征&#xff1a;MIPI接口&#xff1a;&#xff08;1&#xff09;、支持…

java.sql.SQLException: 無法轉換為內部表示之解決

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 這個錯是因為 數據庫中字段類型和程序中該字段類型不一致。 比如程序將某字段當做Integer類型&#xff0c; 而數據庫存儲又使用另外一…

網絡爬蟲--17.【BeautifuSoup4實戰】爬取騰訊社招

文章目錄一.要求二.代碼示例一.要求 以騰訊社招頁面來做演示&#xff1a;http://hr.tencent.com/position.php?&start10#a 使用BeautifuSoup4解析器&#xff0c;將招聘網頁上的職位名稱、職位類別、招聘人數、工作地點、發布時間&#xff0c;以及每個職位詳情的點擊鏈接…

public static void main(String[] args)的理解

public:權限修飾符&#xff0c;權限最大。static:隨著MianDemo類的加載而加載&#xff0c;消失而消失。void: 沒有返回值main: 函數名&#xff0c;jvm識別的特殊函數名(String[] args):定義了一個字符串數組參數。這個字符串數組是保存運行main函數時輸入的參數的

Miller-Rabin素數測試

Miller-Rabin素數測試 給出一個小于1e18的數&#xff0c;問它是否為質數&#xff1f;不超過50組詢問。hihocoder 我是真的菜&#xff0c;為了不誤導他人&#xff0c;本篇僅供個人使用。 首先&#xff0c;一個1e18的數&#xff0c;樸素\(O(\sqrt{n})\)素數判定肯定爆炸。怎么辦呢…