剛剛用bs模組抓取了一些資料,發現其中真的有好多問題,覺得對自己很有用,有的甚至是困擾自己很長時間的。
接下來就說說吧
抓取的是豆瓣電影的**其實用bs模組是非常簡單的,就乙個函式就能搞定了
可是這中間我就出現了一些問題,例如,分割的不明顯,然後自己就一直繞,最後看bs文件
裡面關於get_text()的使用,就覺得自己實在是太愚蠢了,
一直都活在自己造的語法中,跟其正確使用雖然差不多,但是存在很多的問題,所以,這就告訴我們,什麼東西
都不能想當然,一定要細心,記好每個語法的用處以及用法,要不然跟我似的就慘了,東拆西減的最後也不對,
比如有一處,分割一直不明顯,我用的是get_text(strip=true)然後分割線劃到了
file.write(item.encode('utf-8')+'|'),所以就一直分割不出來,在寫別的指令碼的時候,這樣也行的通來著,可是,
在這就不行了,所以,又看了看文件,然後改了正確的,這才分割出來了(我是絕對不會說在這個過程我也把標籤改了的,並且還特沮喪
還有就是encode()用法。比如:
snowman字元在utf-8編碼中可以正常顯示(看上去像是☃)
所以,encode()也是乙個很神奇的語法(其實也就是乙個編碼的問題)print(tag.encode("utf-8"))
#☃print tag.encode("latin-1")
#☃
print tag.encode("ascii")
#☃
好了,那就上我的**吧,沒用多長時間寫,有缺漏的地方還請指教啊
我只爬了2頁,以下的幾頁就是改下range()就好了
#coding=utf-8
from bs4 import beautifulsoup
import urllib2
import time
class db():
def __init__(self):
def gethtml(self,page):
try:
full_url=""+str(page)#後面的有沒有都一樣,索性就刪了吧
req = urllib2.request(full_url,none,self.headers)
response = urllib2.urlopen(req)
html = response.read()
return html
except urllib2.urlerror,e:
if hasattr(e,'reason'):
print u"連線失敗",e.reason
return none
def getitem(self):
for m in range(0,30,25):#在這改頁數就好了
html = self.gethtml(m)
soup=beautifulsoup(html,"html.parser")
trlist = soup.find_all('ol')
file=open("db.txt","a")
for item in trlist:
if item not in ['\n','\t',' ']:
item = item.get_text('|',strip=true)
file.write('\n')
file.write(item.encode('utf-8'))
time.sleep(5)
file.close()
if __name__ == '__main__':
db().getitem()
利用python抓取頁面資料
1 首先是安裝python 注意python3.x和python2.x是不相容的,我們最好用python3.x 安裝方法 安裝python 2 安裝成功後,再進行我們需要的外掛程式安裝。這裡我們需要用到requests和pymssql兩個外掛程式re是自帶的 注 這裡我們使用的是sqlserver所...
利用fiddler抓取APP中的資料
fiddler的安裝就不用多說了,傻瓜是安裝。fiddler是基於 來實現抓取網路資料報的工作的,當我們開啟fiddler以後,fiddler會將我們的瀏覽器的 預設進行更改為127.0.0.1 埠是8888,這時fiddler的預設埠,也就是說我們傳送的每乙個請求和收到的每乙個響應都會先經過fid...
利用fiddler抓取APP中的資料
fiddler的安裝就不用多說了,傻瓜是安裝。fiddler是基於 來實現抓取網路資料報的工作的,當我們開啟fiddler以後,fiddler會將我們的瀏覽器的 預設進行更改為127.0.0.1 埠是8888,這時fiddler的預設埠,也就是說我們傳送的每乙個請求和收到的每乙個響應都會先經過fid...