摘要:什么是爬蟲網絡爬蟲也叫網絡蜘蛛,是一種自動化瀏覽網絡的程序,或者說是一種網絡機器人。
什么是爬蟲
網絡爬蟲也叫網絡蜘蛛,是一種“自動化瀏覽網絡”的程序,或者說是一種網絡機器人。它們被廣泛用于互聯網搜索引擎或其他類似網站,以獲取或更新這些網站的內容和檢索方式。它們可以自動采集所有其能夠訪問到的頁面內容,以供搜索引擎做進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們需要的信息。簡單來講就是模擬瀏覽器請求網頁。
爬蟲的用處Web爬蟲作為搜索引擎的重要組成部分
建立數據集以用于研究,業務和其他目的。比如:
? ?①收集營銷數據,對營銷方案決策提供輔助。
? ?②分析網民對某件事物的評價,比如新聞事件、電影、書籍等。
? ?③分析行業發展趨勢,比如房價、薪資水平。
? ?④社會計算方面的統計和預測,比如票房。
常用的請求方法GET、POST等
常見的狀態碼200 OK、400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、500 Internal Server Error、503 Server Unavailable等
常用的請求報頭:
前端知識對HTML、CSS、JavaScript等有一定的掌握
爬蟲語言選擇爬蟲用的語言,比如python, 掌握python的基本語法、包的下載與使用
爬蟲的基本步驟目標分析-》發送請求-》解析響應頁面-》存儲內容-》數據分析
python爬蟲用到的庫 請求庫requests: requests庫是python的一個第三方請求庫,基于urllib庫(python用于HTTP請求的自帶標準庫)改寫而成,因此相比urllib庫requests更富人性化、便捷性,是爬蟲邏輯中使用最頻繁的HTTP請求庫。
Selenium:一個自動化測試工具庫,利用它可以執行瀏覽器特定的動作,比如跳轉、輸入、點擊、下拉等。
aiohttp:提供異步Web服務,提高爬蟲...
解析庫BeautifulSoup 是一個可以從HTML或XML文件中提取數據的Python庫.它將html的標簽文件解析成樹結構,然后方便的獲取到指定標簽的對應屬性。BeautifulSoup除了支持Python標準庫中的HTML解析器之外,還支持一些第三方的解析器,BeautifulSoup官方推薦使用lxml作為解析器。BeautifulSoup()的構造方法需要傳入兩個參數:
soup = BeautifulSoup("data","lxml") //第一個參數是一段網頁代碼或一個網頁文件,第二個參數是解析網頁的庫,這里使用lxml庫.
Beautiful Soup將復雜HTML文檔轉換成一個復雜的樹形結構,每個節點都是Python對象。
? ? ①Tag:Tag 對象與XML或HTML原生文檔中的tag相同,比如soup.p表示p標簽
? ? ②Attributes:一個tag可能有很多個屬性. 比如
tag的屬性的操作方法與字典相同: tag["class"]
? ? ③find()方法是找到文檔中符合條件的第一個元素,直接返回該結果。元素不存在時返回None
? ? ④find_all()方法是找到文檔中所有符合條件的元素,以列表的形式返回。元素不存在時返回空列表
? ? ⑥CSS選擇器的使用方法與CSS定位標簽的方式相似,主要有.class 和 #id
使用正則表達式,python中的re模塊可使用正則表達式進行匹配。
pyquery庫是jQuery的Python實現,能夠以jQuery的語法來操作解析html文檔
存儲內容數據庫,如MySql、MongoDB
文件
數據分析庫jieba:是目前最好的 Python 中文分詞組件,支持 3 種分詞模式:精確模式、全模式、搜索引擎模式,同時支持繁體分詞、自定義詞典。
numpy:高性能科學計算和數據分析的基礎包,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
pandas:pandas 是基于NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。
matplotlib 數據可視化工具,可生成各種2D圖像。
簡單示例 環境搭建安裝python3.6.5
使用pip install xx 命令依次安裝requests、lxml、beautifulsoup4、jieba、numpy、pandas、matplotlib、wordcloud
初階爬蟲示例介紹爬取豆瓣上關于《權力的游戲第七季》的所有短評
requrl = "https://movie.douban.com/subject/" + movieId + "/comments" +"?" +"start=" + str(start) + "&limit=20" response = requests.get(requrl) #發送請求 if response.status_code == 200: html = response.text # 獲取響應html內容 soup = BeautifulSoup(html, "lxml") # 構建BeautifulSoup對象,使用lxml作為解析器 comment_div_lits = soup.find_all("div", class_="comment") # 找到對應標簽及屬性 for item in comment_div_lits: # 循環 comment = item.find_all("span", class_="short")[0].string # 獲取評論內容 eachCommentList.append(comment) # 添加到list列表 return eachCommentList # 返回列表爬蟲框架scrapy
Scrapy是用純Python實現一個為了爬取網站數據、提取結構性數據而編寫的應用框架,用途非常廣泛,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲。Scrapy 使用了 Twisted"tw?st?d異步網絡框架來處理網絡通訊,可以加快我們的下載速度,不用自己去實現異步框架,并且包含了各種中間件接口,可以靈活的完成各種需求。
scrapy組件列表Scrapy Engine(引擎): 負責Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數據傳遞等。
Scheduler(調度器): 它負責接受引擎發送過來的Request請求,并按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎。
Downloader(下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,
Spider(爬蟲):它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器),
Item Pipeline(管道):它負責處理Spider中獲取到的Item,并進行進行后期處理(詳細分析、過濾、存儲等)的地方.
Downloader Middlewares(下載中間件):位于Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
Spider Middlewares(Spider中間件):介于Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應輸入和請求輸出。
scrapy運行流程1、引擎啟動觸發事務
2、引擎從調度器中取出一個鏈接(URL)用于接下來的抓取
3、引擎把URL封裝成一個請求(Request)傳給下載器
4、下載器把資源下載下來,并封裝成應答包(Response)
5、爬蟲解析Response
6、解析出的實體(Item),則交給實體管道進行進一步的處理
7、解析出的是鏈接(URL),則把URL交給調度器等待抓取
創建項目步驟1、使用pip install xx命令安裝scrapy、Twisted(異步網絡框架處理網絡通訊)
2、進入您打算存儲代碼的目錄中,運行下列命令:scrapy startproject tutorial # tutorial為項目名稱,自行定義
該命令將會創建包含下列內容的 tutorial 目錄:
tutorial/ scrapy.cfg tutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ...
這些文件分別是:
scrapy.cfg: 項目的配置文件
tutorial/: 該項目的python模塊
tutorial/items.py: 項目的目標實體文件
tutorial/pipelines.py: 項目的管道文件.
tutorial/settings.py: 項目的設置文件.
tutorial/spiders/: 存儲爬蟲代碼目錄
spiders目錄下新建爬蟲文件:
import scrapy class testSpider(scrapy.Spider): name = "tutorial" allowed_domains = ["baidu.com"] start_urls = ( "https://www.baidu.com/", ) def parse(self, response): pass反爬蟲與反反爬蟲介紹 常見的反爬蟲 1、通過網頁的請求頭
User-Agent:這個是保存用戶訪問該網站的瀏覽器的信息,例如Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36,requests庫本身的headers里沒有User-Agent,所以網站可以拒絕掉沒有User-Agent或者頻繁使用一個User-Agent的請求。
Referer:當瀏覽器發送請求時,一般都會帶上這個,表示當前請求是由哪個鏈接進來的。網站也可以拒絕沒有Referer或者頻繁使用同個Referer的請求。
authorization:有的網站還會有這個請求頭,這個是在用戶在訪問該網站的時候就會分配一個id給用戶,然后在后臺驗證該id有沒有訪問權限從而來進行發爬蟲。
2、用戶訪問網站的ip當不斷地使用一個ip來訪問一個網站時,網頁后臺也會判斷你是一個機器,把你的ip封掉。
3、驗證碼當頻繁請求一個網址,比如登錄時,會出現驗證碼。
反反爬蟲策略 1.添加請求頭在請求頭headers添加請求頭,比如可以網上找別人整理的User-Agent列表,請求時從列表里隨機取出使用。
2.使用代理ip網上有一些免費的代理ip,比如https://www.xicidaili.com/等,但使用的人太多了也經常被封掉,可以自己爬取一些免費代理ip建成ip池,請求的時候從ip池隨機取出使用。也可以購買付費的ip,質量比較高。
3.處理驗證碼對于比如登錄時只要驗證一次的簡單圖片驗證碼,可以把驗證碼圖片下載下來,手動輸入;對于類似滑塊驗證碼,可以用selenium庫模擬用戶滑動解鎖;對于更復雜的驗證碼可接入收費的打碼平臺。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43745.html
摘要:所以如果對爬蟲有一定基礎,上手框架是一種好的選擇。缺少包,使用安裝即可缺少包,使用安裝即可上一篇文章網絡爬蟲實戰爬取相關庫的安裝的安裝下一篇文章網絡爬蟲實戰爬蟲框架的安裝 上一篇文章:Python3網絡爬蟲實戰---9、APP爬取相關庫的安裝:Appium的安裝下一篇文章:Python3網絡爬蟲實戰---11、爬蟲框架的安裝:ScrapySplash、ScrapyRedis 我們直接...
摘要:以上是如果你想精通網絡爬蟲的學習研究路線,按照這些步驟學習下去,可以讓你的爬蟲技術得到非常大的提升。 作者:韋瑋 轉載請注明出處 隨著大數據時代的到來,人們對數據資源的需求越來越多,而爬蟲是一種很好的自動采集數據的手段。 那么,如何才能精通Python網絡爬蟲呢?學習Python網絡爬蟲的路線應該如何進行呢?在此為大家具體進行介紹。 1、選擇一款合適的編程語言 事實上,Python、P...
閱讀 2026·2019-08-30 15:52
閱讀 2987·2019-08-29 16:09
閱讀 1333·2019-08-28 18:30
閱讀 2461·2019-08-26 12:24
閱讀 1107·2019-08-26 12:12
閱讀 2281·2019-08-26 10:45
閱讀 578·2019-08-23 17:52
閱讀 839·2019-08-23 16:03