寫個小爬蟲,以柯南貼吧為例,爬出所以貼吧人員名單和他們的關注貼吧。
在寫的時候遇到問題如下:
2.暱稱轉碼:
'\xc9\xbd\xb9\xb5\xb9\xb5'
柯南貼吧主頁:
%bf%c2%c4%cf&fr=index
是將『柯南』轉換為gbk編碼將'\x'替換為'%'的方式。
開始是想通過將暱稱轉為gbk碼進行爬取個人主頁,結果發現貼吧的url將'\x' 替換為'%'了,試了很多次,由於\xbf這樣的為乙個位元組,無法分割,所以不太好分解,替換。
原始碼:
import
urllib
import
urllib2
import
re,#貼吧排名頁
url
=""
#個人主頁
user_url
=""
request
=urllib2
.request
(url
+'1'
)
response
=urllib2
.urlopen
(request
)
#匹配排名頁的使用者數
patters =re
.compile
('gray">(\d*?)'
)
content
=response
.read
().decode
('gbk'
)#取得貼吧粉絲總數
allper =re
.findall
(patters
,content
)
txt
=open
('data'
,'w'
)
int(
allper[0
])
#計算頁數
pages
=int
(allper[0]
)/20 #分頁爬取
for
i in
range(1
,pages+1
):
request
=urllib2
.request
(url
+str(i
))
response
=urllib2
.urlopen
(request
)
content
=response
.read
().decode
('gbk'
)
#取使用者名稱
pattern =re
.compile
('username="(.*?)">(.*?)'
)
#取得名次
patterl =re
.compile
('">(\d*?)
')
posts =re
.findall
(patterl
,content
)
items =re
.findall
(pattern
,content
)
fork
inrange(20
):
tmp
=items[k
][0].encode
('gbk'
)
#進入使用者個人主頁
request1
=urllib2
.request
(user_url
+tmp
+'&fr=home'
)
response1
=urllib2
.urlopen
(request1
)#取得個人關注貼吧
patterk =re
.compile
('u-f-item unsign">(.*?)'
)
content
=response1
.read
().decode
('gbk'
)
abort =re
.findall
(patterk
,content
)
items[k
],posts[k
]
txt
.write
(posts[k
])
txt
.write
(' '
+items[k
][1].encode
('gbk')+
':\n'
)
forn
inabort
:
txt
.write
('['+n
.encode
('gbk'
)+']'
)
txt
.write
('\n'
)
txt
=open
('data.txt'
,'w'
)
txt
.close
()
爬取百度貼吧
import urllib.request import urllib.parse import os,time 輸入貼吧名字 baname input 請輸入貼吧的名字 start page int input 請輸入起始頁 end page int input 請輸入結束頁 不完整的url ur...
爬取百度貼吧
帶入需要使用的包 from urllib import request,parse importos 基礎知識 變數賦值 字串賦值 爬取的關鍵字 kw lol 數值賦值 爬取的頁數範圍 start 1end 4 輸出 print kw,start,end 宣告需要爬取的連線 base url 建立資...
爬取百度貼吧資料
每次寫的時候總是正規表示式出現問題,還需多多練習正規表示式的書寫,需要耐心 細心 coding utf 8 引入請求包 import requests 引入正規表示式包 import re 1.準備url url 2.獲取網頁源 發起請求接收響應 response requests.get url ...