利用bs模組抓取資料

2021-07-08 10:26:53 字數 1963 閱讀 4373

剛剛用bs模組抓取了一些資料,發現其中真的有好多問題,覺得對自己很有用,有的甚至是困擾自己很長時間的。

接下來就說說吧

抓取的是豆瓣電影的**其實用bs模組是非常簡單的,就乙個函式就能搞定了

可是這中間我就出現了一些問題,例如,分割的不明顯,然後自己就一直繞,最後看bs文件

裡面關於get_text()的使用,就覺得自己實在是太愚蠢了,

一直都活在自己造的語法中,跟其正確使用雖然差不多,但是存在很多的問題,所以,這就告訴我們,什麼東西

都不能想當然,一定要細心,記好每個語法的用處以及用法,要不然跟我似的就慘了,東拆西減的最後也不對,

比如有一處,分割一直不明顯,我用的是get_text(strip=true)然後分割線劃到了

file.write(item.encode('utf-8')+'|'),所以就一直分割不出來,在寫別的指令碼的時候,這樣也行的通來著,可是,
在這就不行了,所以,又看了看文件,然後改了正確的,這才分割出來了(我是絕對不會說在這個過程我也把標籤改了的,並且還特沮喪
還有就是encode()用法。比如:
snowman字元在utf-8編碼中可以正常顯示(看上去像是☃)

print(tag.encode("utf-8"))

#print tag.encode("latin-1")

#

print tag.encode("ascii")

#

所以,encode()也是乙個很神奇的語法(其實也就是乙個編碼的問題)

好了,那就上我的**吧,沒用多長時間寫,有缺漏的地方還請指教啊
我只爬了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...