初探爬蟲小練習,爬取知乎圓桌內容標題

2022-02-23 17:03:55 字數 1833 閱讀 4923

先上**:

1 # -*- coding: utf-8 -*-

2import urllib

3import urllib2

4import re

5import json67

8class

spider:910

def __init__(self):

11# 記錄爬取每頁的開始

12 self.offset = 0

13 self.title =

1415

def spider_page(self):

16 url = '

'17 headers =

2728 url = url.format(offset=str(self.offset))

29 req = urllib2.request(url, headers=headers)

30 html = urllib2.urlopen(req).read().decode('

utf-8

').encode('

utf-8')

31 html =json.loads(html)

3233 before =self.offset

34try

:35 next_offset = re.findall(r'

offset=(.*)

', html['

paging

']['

next'])

36 self.offset = int(next_offset[0

])37

except:

38 self.offset = 0

3940 titles = html['

htmls']

41 temp = ""

42for title in

titles:

43 temp +=title

4445

return

4647

def find_title(self, titles):

48 titles =titles[:]

49 title = re.findall(r'

(.*?)

', titles)

5051

for item in

title:

5253

5455

if __name__ == '

__main__':

56 s =spider()

57for i in range(6

):58 results =s.spider_page()

59 s.find_title(results["

temp"])

6061

for item in

s.title:

62 print item

總結:總體來說,這段**還是比較好理解的,有以下幾點需要注意:

輸出亂碼,看返回報文首部有content-encoding:"gzip",那麼你就要注意你的請求首部資訊accept-ecoding的內容是否能解壓,或者直接告知伺服器直接不加密傳輸。

在就是對返回的json物件呼叫json.loads進行解碼成json資料型別,否則資料是以字串的形式存在的。

python爬蟲實戰(2) 爬取知乎熱榜內容

二 python 實現 三 最終結果 response requests.get url,headers headers text response.text html etree.html text 構造乙個xpath解析物件並對html文字進行自動修正。number question.xpath...

puppeteer爬取知乎答案列表爬蟲

知乎應該很多人沒事的時候都會去看,畢竟知乎上平均年收入幾十萬,日常出國.哈哈 聽朋友說,今天閒來無事寫了乙個爬取知乎答案列表的爬蟲.當然知乎有營養的內容還是很多的 之前寫過一次抓答案列表介面的爬蟲,感覺不太好,還得找每個問題的請求介面,這次使用puppeteer來通過頁面顯示內容抓取 puppete...

Python爬取知乎溫酒小故事

關於登陸的問題,可以參考我的另一篇部落格 在這裡記錄一下我在爬取溫酒小故事的時候遇到的問題以及解決辦法 css選擇器無效,只好通過觀察,用正規表示式直接從html裡提取資訊。import requests from bs4 import beautifulsoup import re from ur...