爬取糗事百科列表頁案例

2022-03-16 22:59:38 字數 2557 閱讀 4487

import

requests

from lxml import

etree

importre#

爬取糗事百科所有列表頁資訊

class

qiushi():

def__init__

(self, base_url):

self.base_url =base_url

self.max_page =self.get_max_page()

self.get_data()

#獲取最大頁數

defget_max_page(self):

response =requests.get(self.base_url)

html_str =response.text

html =etree.html(html_str)

max_page = html.xpath('

//ul[@class="pagination"]/li[last()-1]/a/span/text()')

max_page =int(max_page[0].strip())

return

max_page

#發起請求獲取資料

defget_data(self):

#迴圈獲取每一頁的資料

for page in range(1, self.max_page + 1):

base_url = '

'.format(page)

response =requests.get(base_url)

html_str =response.text

html =etree.html(html_str)

result = html.xpath('

//div[@class="recommend-article"]/ul/li')

all_list =

for site in

result:

#print(type(site))

#看看裡面是什麼

#print(etree.tostring(site, pretty_print=true,encoding='utf-8').decode('utf-8'))

qiushi_info ={}

funny_number = site.xpath('

.//div[@class="recmd-num"]/span[1]/text()

') #

搞笑數 comment_number = site.xpath('

.//div[@class="recmd-num"]/span[4]/text()

') #

content = site.xpath('

.//a[@class="recmd-content"]/text()

') #

內容 pic = site.xpath('

.//a[contains(@class, "recmd-left")]/img/@src

') #

username = site.xpath('

.//span[@class="recmd-name"]/text()

') #

使用者暱稱

#all函式 所有的都為真 返回真 只要有乙個假 則返回假

#any函式 只要有乙個為真 則返回真

#過濾掉廣告

ifall([funny_number, comment_number, content, pic, username]):

qiushi_info[

'funny_number

'] =funny_number[0]

qiushi_info[

'comment_number

'] =comment_number[0]

qiushi_info[

'content

'] =content[0]

#拼接url

#獲取原始大小 有些沒有問號 就是原始if"

?"inpic:

pattern = re.compile('

(.*?)\?')

pic =pattern.findall(pic)[0]

qiushi_info[

'pic

'] =pic

qiushi_info[

'username

'] =username[0]

#整理輸出

print('

-------------------第{}頁------------------------

'.format(page))

for i in

all_list:

print

(i)if

__name__ == "

__main__":

base_url = '

'qiushi(base_url)

簡單爬取糗事百科

剛剛入門,對於爬蟲還要折騰很久才行,雖然很多功能還沒開始掌握,但是爬取下來就很開心,接下來還會爭取進步的。把自己出現的一些錯誤都加上了注釋,我目前還在學習當中,大家一起進步。期間學了乙個新的函式,在這裡分享下 strip 網上是這麼說的 需要注意的是,傳入的是乙個字元陣列,編譯器去除兩端所有相應的字...

python 爬取糗事百科

step 1 構建乙個提取糗事百科笑話的函式import urllib2 import urllib import re import thread import time import sys reload sys sys.setdefaultencoding utf 8 defgetpage p...

Python爬取糗事百科

一 引入模組 因為urlopen功能比較簡單,所以設定 ip需引入proxyhandler和build opener模組,ip的獲取可以上西祠 查詢 import re from urllib.request import request,build opener,proxyhandler base...