簡單爬蟲總結

2021-08-15 02:35:42 字數 3138 閱讀 8854

url:

url主要有三部分組成:

(1)協議,常見的協議有http,https,ftp,file(訪問本地資料夾),ed2k(電驢的專用鏈結)等等。

(2)存放資源的伺服器的網域名稱系統(dns)主機名或者ip位址(有時候包含埠號,各種傳輸協議都有預設的埠號)

(3)主機資源的具體位址,如目錄和檔名等

注意:第一部分和第二部分用"://"符號隔開的,

第二部分和第三部分用"/"符號隔開的,

第一部分和第二部分是不可缺少的,第三部分有時候可以省略。

urllib:

爬取網頁:

f.write(html)注意:

(1)urlopen的url引數即可以是乙個字串也可以是乙個request物件,如果你傳入是乙個字串,那麼python是會預設幫你

把目標字元轉換成request物件,然後在傳入urlopen函式,如上述注釋**所示。

(2)urlopen實際上返回的是乙個類檔案物件,因此你可以用read()方法來讀取內容,他還有以下三個函式會用到。

1.geturl()--返回請求的url

2.info()--返回乙個httplib,httpmessage物件,包含遠端伺服器返回的頭資訊。

3.getcode()--返回http狀態碼

隱藏身份:

useragent:

對於一些伺服器來說是不願意讓爬蟲進行爬去的,這樣伺服器的壓力就會增加,伺服器一般是通過user-agent來識別 的,普通瀏覽器會通過該內容向訪問**提供你所使用的瀏覽器型別、作業系統、瀏覽器核心等資訊的標識。

修改user-agent:

例項化request物件的時候將headers引數傳進去或者通過add_header()方法往request物件新增headers,如:

import urllib.request

import urllib.parse

head={}

head["referer"] = ""

head["user-agent"] = ""

data = {}

data["type"] = ""

data["keyform"] = ""

data = urllib.parse.urlencode(data).encode("utf-8")

req = urllib.request.request(url,data,head)

# req = urllib.request.request(url,data)

# req.add_header('referer','')

# req.add_header('user-agent','')

urllib.request.urlopen(req)

注意:如果長時間靠修改user-agent進行抓取,那麼乙個ip短時間內連續進行網頁的訪問,很可能會被服務

器識別是機器抓取,所以,這裡有兩種策略可供選擇:

第一種就是延遲提交的時間,但是這樣會使得工作效率低下。

第二種策略就是使用**。

使用**:

使用**ip,伺服器看到的是**ip位址,而不是你自己的ip位址。

proxy_support = urllib.request.proxyhandler()
引數是乙個字典,字典的鍵是**的型別,字典的值就是**的ip位址和對應的埠號。

opener = urllib.request.build_opener(proxy_support)
opener可以看作是乙個私人訂製,當使用urlopen()函式開啟乙個網頁的時候,你就是使用預設的opener在工作

所以這裡使用build_opener()函式建立了乙個屬於我們自己私人定製的opener

urllib.request.install_opener(opener)
這裡將制定好的opener安裝到系統中,這是一勞永逸的做法

因為在此之後,你只需要使用普通的urlopen()函式,就是以定製好的opener進行工作的。

如果你不想替換掉預設的opener,你也可以每次特殊需要的時候,用opener.open()的方法來開啟網頁。  

iplist = input("請輸入ip:").split(sep=";")

ip = random.choice(iplist) #隨機使用ipiplist = input("請輸入ip:").split(sep=";")

ip = random.choice(iplist) #隨機使用ip

beautiful soup:

安裝beautiful soup:

開啟cmd,執行命令: python3 -m pip install beautifulsoup4

在ide下from bs4 import beautifulsoup,沒有報錯說明安裝成功

使用beautiful soup:

from bs4 import beautifulsoup

html = response.read().decode('utf-8')

soup = beautifulsoup(html,'html.parser')

for each in soup.find_all(""):

print(each)

正規表示式:

網上查資料

python爬蟲簡單 python爬蟲 簡單版

學過python的帥哥都知道,爬蟲是python的非常好玩的東西,而且python自帶urllib urllib2 requests等的庫,為爬蟲的開發提供大大的方便。這次我要用urllib2,爬一堆風景。先上重點 1 response urllib2.urlopen url read 2 soup...

python爬蟲入門簡單爬蟲

coding utf 8 from bs4 import beautifulsoup,soupstrainer from threading import lock,thread import sys,time,os from urlparse import urlparse,urljoin fro...

Scrapy 簡單爬蟲中遇到的問題總結

在進行item傳參時總是出現重複資料 在scrapy資料爬取中發現通過以下語句傳遞的引數會出現重複現象,導致爬取的資料出現重複和錯亂的現象。yield scrapy.request item url meta callback self.detail parse 為了解決以上問題,找到 scrapy...