先上**:
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...