Free性欧美Hd另类_精品亚洲欧美视频在线观看_freesex欧美喷水_字幕av在线_久久久久久国产免费_伊人5566

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 學習交流 > python爬蟲

python爬蟲

2021-07-01 15:53:05 | 來源:中培企業IT培訓網
python這們計算機語言對大家來說應該就不陌生了。它的核心內容在往期的文章我們也有講解。那么python爬蟲又應該認識如何它呢?學習它,首先要了解爬蟲思路,其次就是實戰解析。實戰解析又包括四個小的環節。

兩周前,一位同學問小央,平時有沒有寫過技術類博客。小央大言不慚,隨口就說下次可以嘗試。

這不,自己挖的坑,哭也得填上。正巧,最近要統計自己的閱讀記錄,一個個看多費勁呀,如果能寫個爬蟲程序,自動化獲取數據,豈不美哉。

一瓶不響半瓶晃蕩,技術渣小央,剛有點小成績的時候,就忍不住的要分享給小白們了。

一、爬蟲思路

爬蟲是指請求網站并獲取數據的自動化程序,又稱網頁蜘蛛或網絡機器,最常用領域是搜索引擎,它的基本流程是明確需求-發送請求-獲取數據-解析數據-存儲數據。

網頁之所以能夠被爬取,主要是有以下三大特征:

網頁都有唯一的URL(統一資源定位符,也就是網址)進行定位

網頁都使用HTML(定位超文本標記語言)來描述頁面信息

網頁都使用HTTP/HTTPS(超文本傳輸協議)協議來傳輸HTML數據

因此,只要我們能確定需要爬取的網頁 URL地址,通過 HTTP/HTTPS協議來獲取對應的 HTML頁面,就能提取 HTML頁面里有用的數據。

在工具的選擇上,任何支持網絡通信的語言都可以寫爬蟲,比如 c++、 java、 go、 node等,而 python則是用的最多最廣的,并且也誕生了很多優秀的庫和框架,如 scrapy、 BeautifulSoup 、 pyquery、 Mechanize等。

私信小編001 有神秘驚喜大禮包!

BeautifulSoup是一個非常流行的 Pyhon 模塊。該模塊可以解析網頁,并提供定位內容的便捷接口。

但是在解析速度上不如 Lxml模塊,因為后者是用C語言編寫,其中 Xpath可用來在 XML文檔中對元素和屬性進行遍歷。

綜上,我們本次爬取工具選擇 Python,使用的包有 requests、 Lxml、 xlwt、 xlrd,分別用于模擬賬戶登錄、爬取網頁信息和操作 Excel進行數據存儲等。

二、實戰解析

1. 模擬賬戶登錄

因為要爬取個人賬戶下的讀書列表,我們首先要讓 Python創建用戶會話,用于在跨請求時保存Cookie值,實現從客戶端瀏覽器連接服務器開始,到客戶端瀏覽器與服務器斷開。

其次要處理請求頭 Header,發送附帶賬戶名和密碼的 POST請求,并獲取登陸后的 Cookie值,保存在會話里。

登陸進去之后,我們就可以長驅直入進行爬蟲了;否則,它就會因請求不合法報錯。

代碼示例

# 1. 創建session對象,可以保存Cookie值ssion = requests.session()# 2. 處理 headersuser_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'headers={'User-Agent':user_agent}# 3. 需要登錄的用戶名和密碼data = {"email":"豆瓣賬戶名XX", "password":"豆瓣密碼XX"}# 4. 發送附帶用戶名和密碼的請求,并獲取登錄后的Cookie值,保存在ssion里ssion.post("https://www.douban.com/accounts/login", data = data)respon=ssion.get(url,headers=headers)

2. 分析網頁結構

進入讀書頁面,右鍵選擇“檢查”,可以看到如下界面:當鼠標定位在某一行代碼時,就會選中左側對應模塊。

所有圖書內容的標簽,存放在一個類名為 id="content"的div盒子, class="subject-item"的li盒子。

同樣方法,我們也可以找到書名、作者、出版社、何時讀過、評論信息,分別對應哪些標簽。

最終,我們通過CSS路徑提取來提取對應標簽數據。

代碼示例

#因為每頁有15本書,所以這里做了個循環for tr in trs: i = 1 while i <= 15: data = [] title = tr.xpath("./ul/li["+str(i)+"]/div[2]/h2/a/text()") info = tr.xpath('./ul/li['+str(i)+']/div[2]/div[1]/text()') date = tr.xpath('./ul/li['+str(i)+']/div[2]/div[2]/div[1]/span[2]/text()') comment = tr.xpath('./ul/li['+str(i)+']/div[2]/div[2]/p/text()')

3. 自動翻頁,循環爬取

因為要爬取歷史讀書清單,當爬完一頁的時候,需要程序能夠實現自動翻頁功能。

一種方法是讓它自動點擊下一頁,但這個學習成本有點高,吃力不討好;另一種方法,就是尋找網頁之間的規律,做個循環即可。

以央之姑娘的豆瓣賬戶為例:很容易發現網頁之間的區別僅在于start值不同,第一頁的 start=0.第二頁 start=15.以此類推,最后一頁,即19頁的 start=(19-1)*15=270.

找到這樣的規律就很容易實現Python自動翻頁功能,條條大路通羅馬,適合自己的就是最好的。

代碼示例

def getUrl(self): i = 0 while i < 271: url = ('https://book.douban.com/people/81099629/collect?start='+str(i)+'&sort=time&rating=all&filter=all&mode=grid') self.spiderPage(url) i += 15

4. 數據存儲

數據存儲有很多種方法,因為數據量不大,用Excel即可滿足,具體方法就不在這里贅述了。

代碼示例

def __init__(self): self.f = xlwt.Workbook() # 創建工作薄 self.sheet1 = self.f.add_sheet(u'央之姑娘', cell_overwrite_ok=True) # 命名table self.rowsTitle = [u'編號',u'書名', u'信息', u'讀過日期', u'評論'] # 創建標題 for i in range(0. len(self.rowsTitle)): # 最后一個參數設置樣式 self.sheet1.write(0. i, self.rowsTitle[i], self.set_style('Times new Roman', 220. True)) # Excel保存位置 self.f.save('C://Users//DELL//央之姑娘.xlsx')

def set_style(self, name, height, bold=False): style = xlwt.XFStyle() # 初始化樣式 font = xlwt.Font() # 為樣式創建字體 font.name = name font.bold = bold font.colour_index = 2 font.height = height style.font = font return style

三、效果演示

前面講了爬蟲的原理和方法,那么接下來我們就展示一下具體效果:

附錄:完整代碼

from lxml import etree

import requests

import xlwt

import xlrd

class douban(object):

def __init__(self):

self.f = xlwt.Workbook() # 創建工作薄

self.sheet1 = self.f.add_sheet(u'央之姑娘', cell_overwrite_ok=True) # 命名table

self.rowsTitle = [u'編號',u'書名', u'信息', u'讀過日期', u'評論'] # 創建標題

for i in range(0. len(self.rowsTitle)):

# 最后一個參數設置樣式

self.sheet1.write(0. i, self.rowsTitle[i], self.set_style('Times new Roman', 220. True))

# Excel保存位置

self.f.save('C://Users//DELL//央之姑娘.xlsx')

def set_style(self, name, height, bold=False):

style = xlwt.XFStyle() # 初始化樣式

font = xlwt.Font() # 為樣式創建字體

font.name = name

font.bold = bold

font.colour_index = 2

font.height = height

style.font = font

return style

def getUrl(self):

#自動翻頁

'''

url = ('https://book.douban.com/people/81099629/collect?start=0&sort=time&rating=all&filter=all&mode=grid')

self.spiderPage(url)

'''

i = 0

while i < 271:

url = ('https://book.douban.com/people/81099629/collect?start='+str(i)+'&sort=time&rating=all&filter=all&mode=grid')

self.spiderPage(url)

i += 15

def spiderPage(self,url):

if url is None:

return None

try:

data=xlrd.open_workbook('C://Users//DELL//央之姑娘.xlsx')

table=data.sheets()[0]

rowCount=table.nrows#獲取行數

# 1. 創建session對象,可以保存Cookie值

ssion = requests.session()

# 2. 處理 headers

user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'

headers={'User-Agent':user_agent}

# 3. 需要登錄的用戶名和密碼

data = {"email":"豆瓣賬戶名XX", "password":"豆瓣密碼XX"}

# 4. 發送附帶用戶名和密碼的請求,并獲取登錄后的Cookie值,保存在ssion里

ssion.post("https://www.douban.com/accounts/login", data = data)

respon=ssion.get(url,headers=headers)

htmltext=respon.text

s = etree.HTML(htmltext)

trs = s.xpath('//*[@id="content"]/div[2]/div[1]')

m=0

for tr in trs:

i = 1

while i <= 15:

data = []

title = tr.xpath("./ul/li["+str(i)+"]/div[2]/h2/a/text()")

info = tr.xpath('./ul/li['+str(i)+']/div[2]/div[1]/text()')

date = tr.xpath('./ul/li['+str(i)+']/div[2]/div[2]/div[1]/span[2]/text()')

comment = tr.xpath('./ul/li['+str(i)+']/div[2]/div[2]/p/text()')

title=title[0] if title else ''

info=info[0] if info else ''

date=date[0] if date else ''

comment=comment[0] if comment else ''

data.append(rowCount+m)

data.append(title)

data.append(info)

data.append(date)

data.append(comment)

i += 1

for n in range(len(data)):

self.sheet1.write(rowCount+m,n,data[n])

m+=1

print(m)

print(title, info, date, comment)

finally:

self.f.save('C://Users//DELL//央之姑娘.xlsx')

if '_main_':

qn=douban()

qn.getUrl()

通過這些部分的介紹,你應該學會了不少東西吧?有句話是這樣說的:興趣是最好的老師,如果你對爬蟲有興趣,那你可以好好了解一下這里還沒有講到的東西。想要了解更多關于Python的信息,請繼續關注中培偉業。
標簽: Python爬蟲
主站蜘蛛池模板: 久久久精品午夜免费不卡 | 久草成人在线观看 | 丁香六月深婷婷激情五月 | 一级毛片全部免费播放特黄 | 黄色成人影院 | 粉嫩av在线播放一绯色 | bt天堂新版中文在线地址 | 免费视频专区一国产盗摄 | 4虎海外永久域站 | 国产爆乳无码av在线播放 | 萍萍的性荡生活第二部 | 2020无码专区人妻系列 | 伊人久久天堂 | 美女视频黄网站免费观看 | 中日韩免费av | 欧美日韩香蕉 | 欧美肥婆丰满bbw | 欧美日韩一区二区三区视频播放 | 97在线视频免费 | 亚洲精品网站在线观看 | 国产开嫩苞视频在线观看 | 在线黄色免费看 | 91精品国产一区二区在线观看 | 又粗又大又硬毛片免费看 | 成www日本在线观看 成人综合婷婷国产精品久久蜜臀 | 国产毛片久久久久久国产毛片 | a级在线免费观看 | 亚洲色一区二区三区四区 | 日本草逼视频 | 欧美成视频在线观看 | 成年人免费小视频 | 无码人妻一区二区三区免费看成人 | 2024国产盗摄视频在线观看 | 免费在线一级视频 | 99视频在线精品 | 日韩在线观看成人 | 久久成人免费精品网站 | 免费在线观看www | 国产一区二区三区免费观看网站上 | 神偷奶爸4中文版免费观看 国产黄色大片在线观看 | 成年人av在线免费观看 |