首先我們先建立接下來需要用的的東西
這裡我們建立乙個專門用於請求網頁的方法,要求每次呼叫時需要傳遞進來乙個url位址,發起requests.get請求,使用傳遞進來的url作為請求位址,使用類中的私有變數self.headers,作為請求頭。並且將網頁返回內容作為get_html方法的返回值.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__方法使用的形參需要在建立例項時傳遞進來,
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.有些 ...