python爬虫教程(一)
?
? ? ? ?Python版本:python3.6
? ? ? ?使用工具:pycharm
一、第一個爬蟲程序
? ? ? ?獲得網址源代碼。如下圖獲取百度頁面源代碼
二、Web請求過程
? ? ? ?1. 服務器渲染:在服務器中直接把數據和html整合在一起,返回給瀏覽器。(在頁面源代碼中能看到數據)
? ? ? ?2. 客戶端渲染:第一次請求只要一個html骨架,第二次請求拿到數據,進行數據展示。(在頁面源代碼中,看不到數據)
三、requests入門
? ? ? ?1. 獲取搜狗引擎搜索周杰倫頁面源代碼。
? ? ? ?2. 出現報錯,網頁存在反爬,處理反扒。
? ? ? ?3. 修改代碼,使其更加靈活獲取不同搜索內容對應不同頁面源代碼。
? ? ? ?4.當請求方式為POST時,以百度翻譯為例獲取頁面源代碼。
? ? ? ??5. 當想要爬取數據與網頁框架不在一起時。以豆瓣電影排行榜為例。需先找到所需爬取數據位置。
? ? ? ?將其參數變量進行封裝,補充網址參數,其參數信息位置及代碼如下:
?? ? ??注意:使用完爬蟲程序后,關閉爬蟲程序。
? ? ? ?如上示例需使用resp.close()關閉爬蟲程序。
四、數據解析
? ? ? ?本文中將介紹三種解析方式:re解析、bs4解析、xpath解析。
? ? ? ?1.?re解析:Regular Expression,正則表達式,一種使用表達式的方式對字符串進行匹配的語法規則。
? ? ? ?優點:速度快、效率高、準確性高
? ? ? ?缺點:上手難度較高
? ? ? ?語法:使用元字符進行排列組合用來匹配字符串(元字符是具有固定含義的特殊符號),常用元字符:
? ? ? ?.? ? ? ?匹配除換行符以外的任意字符 ??? ? ? ?? ? ? ?? ? ? ? ? ?a|b 匹配字符a或b
? ? ? ?\w? ? 匹配字母或數字或下劃線 ?? ? ? ?? ? ? ?? ? ? ?? ? ? ???????\W 匹配非字母或數字或下劃線
? ? ? ?\s? ? ?匹配任意空白符 ????????? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ????????\S 匹配非空白符
? ? ? ?\d? ? ?匹配數字 ?????????????????? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ?? ?\D 匹配非數字????????????
? ? ? ?[…]? 匹配字符組中的字符 ????????? ? ? ?? ? ? ?? ? ? ?? ? ? ??? [^…] 匹配除字符組中的所有字符
? ? ? ?^? ? ? 匹配字符串的開始 ???????????? ? ? ?? ? ? ?? ? ? ?? ? ? ?? ? ?? ?$? 匹配字符串的結束
? ? ? ?量詞:控制元字符出現的次數
? ? ? ? ?*? ?? ?重復零次或多次
? ? ?? ?+? ? ??重復一次或多次
? ? ? ???? ? ?重復零次或一次
? ? ???{n}? ? ?重復n次
? ? ??{n,}? ?? 重復n次或更多次
? ? ?{n,m}? ?重復n到m次
? ? ?(1)re模塊使用,findall() 匹配字符串中所有的符合正則的內容
? ? ?(2)finditer()匹配字符串中所有的內容,返回迭代器
? ? ? ?從迭代器中拿出內容需要.group()
? ? ?(3)search,找到一個結果就返回,返回的結果是match對象,拿數據需使用.group()
? ? ?(4)match,從頭開始匹配
? ? ? ?當選取數據開始即為所需數據時,可輸出結果。
? ? ?(5)預加載正則表達式,可重復使用
?? ? ?(6)正則中內容單獨提取。我們將想要提取內容部分定義組(?P<分組名字>正則),然后使用.group()提取某個組的內容。(re.S:讓.能夠匹配換行符)
?? ? ? ? 2. 實戰爬取豆瓣Top250電影信息。
? ? ?(1)使用requests,拿到頁面源代碼。
?? ? ?(2)使用re,解析數據
?
?? ? ? ? 設定爬取以上四個數據,電影名字、年份、評分、評價人數,在頁面源代碼中找到所需內容位置(紅色框),并找到內容定位方法及位置(白色框)?
?? ? ? ? 解析數據:其中.strip()去掉年份前面空格。
?? ? ? ?將獲取到文件保存為文件。導入csv,將內容存入字典,同理year需單獨處理。
?? ? ? ?輸出文件data.csv內容
?? ? ? ?3. 實戰爬取電影天堂下載鏈接,目標爬取2021必看熱片信息。
? ? ?(1)獲取頁面源代碼
?? ? ? ? 如上輸出結果中存在亂碼問題,我們默認使用的字符集為utf-8,可看到其網站的字符集為gb2312,需要指定使用字符集解決亂碼問題。
?? ? ?(2)定位到2021必看熱片,在頁面源代碼中找到所需位置。
?? ? ? (3)從2021必看熱片中提取到子頁面的鏈接地址
? ? ? ?得到的子頁面鏈接不完整,缺少域名,需要進行一個鏈接的拼接。
??? ? ? 得到了完整的子頁面鏈接,將子頁面鏈接保存起來。
?? ? ? ?提取子頁面內容,輸出得到片名及下載鏈接。
總結
以上是生活随笔為你收集整理的python爬虫教程(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scrapy介绍及入门
- 下一篇: Python爬虫教程(二)