python 爬蟲 豆瓣讀書使用者評分爬蟲

2021-09-12 03:02:42 字數 3429 閱讀 9735

首先我們先建立接下來需要用的的東西

import requests 

#匯入requests模組用於請求網頁

from lxml import etree

#從lxml模組中匯入etree模組用於解析網頁

class userspinfen():

#定義乙個douban類,用於承載後面的**

def __init__(self,url):

#定義__init__方法,並且設定形參url

#設定類中的私有變數

self.url = url #設定請求的url

self.headers =

#建立requests請示網頁時使用的請求頭

self.pinfen = 0 #用於計算評分

self.sub_page_url = #用於承載品論頁的url

· #python類建立例項時預設就會呼叫__init__方法,也就是說給__init__方法使用的形參需要在建立例項時傳遞進來,

這裡我們建立乙個專門用於請求網頁的方法,要求每次呼叫時需要傳遞進來乙個url位址,發起requests.get請求,使用傳遞進來的url作為請求位址,使用類中的私有變數self.headers,作為請求頭。並且將網頁返回內容作為get_html方法的返回值.

def get_html(self,page_url):

return requests.get(url=page_url,headers=self.headers).text

def test_more(self,sub_page_url):

for url in sub_page_url:

if not (url in self.sub_page_url):

#檢測url是否存在於私有變數sub_page_url,如果沒有則存入

def get_info(self,page_url):

#定義乙個get_info方法,並且要求呼叫時傳遞page_url

html_etree = etree.html(self.get_html(page_url))

#呼叫之前定義的get_html方法,並將本方法的page_url傳遞進入,將返回值轉換為etree格式

pinfen = html_etree.xpath('//span[@class="vote-count"]/text()')

#在網頁**etree物件中使用xpath匹配出class屬性為"vote-count的\標籤中的內容

self.pinlun += html_etree.xpath('//span[@class="short"]/text()')

#在網頁**etree物件中匹配出class屬性為"short"的\標籤中的內容

for i in pinfen:

self.pinfen += int(i)

#使用for迴圈提取出評分

def test_page_number(self,main_url):

#定義乙個get_info方法,並且要求呼叫時傳遞main_url

html_etree = etree.html(self.get_html(main_url))

#呼叫get_html方法將返回的內容轉換為etree格式

sub_page_url = html_etree.xpath('//li[@class="p"]/a[@class="page-btn"]/@href')

if not (len(sub_page_url) == 2):

self.test_more(sub_page_url)

#傳遞進test_more方法檢測是否有重複的

self.test_page_number(self.url+"{}".format(sub_page_url[-1]))

else:

for url in self.sub_page_url:

self.get_info(self.url+"{}".format(url))

import requests

from lxml import etree

class douban():

def __init__(self,url):

self.url = url

self.headers =

self.pinfen = 0

self.sub_page_url =

self.pinlun =

def get_html(self,page_url):

return requests.get(url=page_url,headers=self.headers).text

def test_more(self,sub_page_url):

for url in sub_page_url:

if not (url in self.sub_page_url):

def get_info(self,page_url):

html = self.get_html(page_url)

html_etree = etree.html(html)

pinfen = html_etree.xpath('//span[@class="vote-count"]/text()')

self.pinlun += html_etree.xpath('//span[@class="short"]/text()')

for i in pinfen:

self.pinfen += int(i)

def test_page_number(self,main_url):

html_etree = etree.html(self.get_html(main_url))

sub_page_url = html_etree.xpath('//li[@class="p"]/a[@class="page-btn"]/@href')

if not (len(sub_page_url) == 2):

self.test_more(sub_page_url)

self.test_page_number(self.url+"{}".format(sub_page_url[-1]))

else:

for url in self.sub_page_url:

self.get_info(self.url+"{}".format(url))

douban = douban("")

douban.test_page_number("")

print ("該書用於總評分{}".format(douban.pinfen))

print (douban.pinlun)

python 簡書使用者爬蟲

1 python2 coding utf 8 3 4 title 5 author wlc 6 mtime 2017 10 15 7 8importre9 import time 10import math 11import csv12 import requests 13from bs4 impo...

豆瓣讀書爬蟲(requests re)

前面整理了一些爬蟲的內容,今天寫乙個小小的栗子,內容不深,大佬請忽略。內容包括對豆瓣讀書 中的書籍的基本資訊進行爬取,並整理,便於我們快速了解每本書的中心。每當爬取某個網頁的資訊時,首先就是要進入到網頁中,看看有沒有什麼爬取過程中的限制,可以檢視 的robots協議。就是在原 的後面加上 robot...

python爬蟲 豆瓣

在爬蟲時候,通過requests.get 得到不正確的狀態碼 4 表示出錯 異常狀態碼檢視 fr aladdin 4 19 用requests庫的get 函式抓取乙個你平時經常使用的 主頁,並檢視該 的爬蟲協議 如果有的話 預設答案是正確,你成功了嗎?fp.write r.content b.有些 ...