日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

手把手带你入门Python爬虫(二、爬虫预备知识)

發布時間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手把手带你入门Python爬虫(二、爬虫预备知识) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬蟲預備知識

  • 一、計算機網絡協議基礎
  • 二、Html、Css、Javascript
    • Ajax 異步加載
    • GET請求 與 POST請求
    • 3種content-type
  • 三、爬蟲基本方法
    • 1. 采集方案分類
    • 2. requests庫
    • 3. 正則表達式
    • 4. beautifulsoup用法
    • 5. xpath基本語法
    • 6. css選擇器提取元素

一、計算機網絡協議基礎

一個完整的網絡請求過程如下:

在瀏覽器輸入域名后,瀏覽器先訪問DNS服務器,DNS返回ip給瀏覽器,然后瀏覽器與web服務器建立TCP連接,瀏覽器就可以發送http請求,web服務器返回數據到瀏覽器,接下來就是瀏覽器解析內容的步驟。

七層網絡協議:

  • 應用層 Http、ftp、pop3、DNS
  • 表示層
  • 會話層
  • 傳輸層 TCP、UDP
  • 網絡層 ICMP、IP、IDMP
  • 數據鏈路層 ARP、RARP
  • 物理層 物理傳輸介質

二、Html、Css、Javascript

網頁三要素:Html、Css、Javascript
Html是承載網頁內容的骨骼;
Css是網頁的樣式;
Javascript是網頁運行的腳本;

我們需要爬蟲的內容一般為網頁的部分HTML的內容,所以說可見即可得,只要在頁面上看得到的我們就可以爬到。

瀏覽器的加載過程:
構建DOM樹—子資源加載(加載外部的css、js、圖片等外部資源)—樣式渲染(css執行)

查找頁面元素一般通過DOM樹來查找:

Ajax 異步加載

有的數據是通過js向服務器發送請求,返回數據將數據通過js動態插入到頁面的,這種方式不會刷新頁面,用戶體驗效果好。
ajax返回的數據又可能是json格式,也可以是html頁面部分。

動態網頁和靜態網頁:
動態:數據是與后臺有交互的,可以變的(ajax)
靜態:數據不可變的(如果要變需要修改源代碼)

動態網頁體驗好,局部加載,對服務器好,擴展性好
靜態網頁有利于SEO

GET請求 與 POST請求

GET參數包含在URL中,POST通過request body 傳遞參數。

  • GET在瀏覽器回退時是無害的,而POST會再次提交請求
  • GET請求只能進行url編碼,而POST支持多種編碼方式
  • GET請求在URL中傳送的參數是有長度限制的,而POST沒有
  • GET比POST更不安全,因為參數直接暴露在URL上,所以不能傳遞敏感信息
  • 3種content-type

  • application/x-www-form-urlencoded
    POST提交數據,瀏覽器原生form表單,如果不設置enctype屬性,那么最終就會以application/x-www-form-urlencoded方式提交數據。提交的數據按照key1=val1&key2=val2的方式進行編碼,key和val都進行了URL轉碼。

  • multipart/form-data
    表單上傳文件。

  • application/json
    告訴服務器消息主體是序列化后的JSON字符串。

  • 三、爬蟲基本方法

    1. 采集方案分類

    一般我們采集網站只采集需要的指定的數據,采集方案分類:

  • 利用http協議采集 - 頁面分析
  • 利用api接口采集 - app數據采集
  • 利用目標網站的api采集 - 微博、github
  • 2. requests庫

    官方文檔地址:https://requests.readthedocs.io/zh_CN/latest/
    安裝:

    pip install requests

    如果使用了虛擬環境,請確保在虛擬環境再安裝一遍,保證使用了虛擬環境的項目正常運行

    初探,爬一下百度頁面:

    import requestsres = requests.get("http://www.baidu.com") print(res.text)

    百度頁面的html代碼就打印出來了:

    后面具體項目再詳細介紹具體用法。

    3. 正則表達式

    正則表達式是為了更好的處理獲取的字符串,更方便的獲取我們需要的字符。
    常用的正則語法:

    語法作用
    .匹配任意字符(不包括換行符)
    ^匹配開始位置,多行模式下匹配每一行的開始
    $匹配結束位置,多行模式下匹配每一行的結束
    *匹配前一個元字符0到多次
    +匹配前一個元字符1到多次
    ?匹配前一個元字符0到1次
    {m,n}匹配前一個元字符m到n次
    \\轉義字符
    [ ]字符集
    |邏輯或
    \b匹配位于單詞開始或結束位置的空字符串
    \B匹配不位于單詞開始或結束位置的空字符串
    \d匹配一個數字
    \D匹配非數字
    \s匹配任意空白
    \S匹配非任意空白
    \w匹配數字、字母、下劃線中任意一個字符
    \W匹配非數字、字母、下劃線中的任意字符

    python使用正則,簡單提取生日:

    import reinfo = "姓名:zhangsan 生日:1995年12月12日 入職日期:2020年12月12日"# print(re.findall("\d{4}", info)) match_result = re.match(".*生日.*?(\d{4})", info) print(match_result.group(1)) # 1995

    4. beautifulsoup用法

  • 安裝
    (如果使用的是虛擬環境,需要先切換到虛擬環境進行安裝)
  • pip install beautifulsoup4
  • 官方文檔
    https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
  • 簡單使用
  • from bs4 import BeautifulSoup import requestsbaidu = requests.get("http://www.baidu.com") baidu.encoding = "utf-8"bs = BeautifulSoup(baidu.text, "html.parser") title = bs.find("title") print(title.string)navs = bs.find_all("img") for i in navs:print(i)

    結果:

    5. xpath基本語法

    這里主要介紹Selector.

    安裝:
    python包下載:https://www.lfd.uci.edu/~gohlke/pythonlibs/
    如果直接安裝lxml或scrapy安裝不成功可以去上面網站依次下載安裝包,然后通過pip安裝:

    pip install lxml pip install Twisted-20.3.0-cp38-cp38-win32.whl pip install Scrapy-1.8.0-py2.py3-none-any.whl

    xpath使用路徑表達式在xml和html中進行導航。


    簡單用法:

    import requests from scrapy import Selectorbaidu = requests.get("http://www.baidu.com") baidu.encoding = "utf-8" html = baidu.textsel = Selector(text=html) tag = sel.xpath("//*[@id='lg']/img").extract()[0] print(tag) # <img hidefocus="true" src="//www.baidu.com/img/bd_logo1.png" width="270" height="129">

    6. css選擇器提取元素

    import requests from scrapy import Selectorbaidu = requests.get("http://www.baidu.com") baidu.encoding = "utf-8" html = baidu.textsel = Selector(text=html)imgs = sel.css("img").extract() for i in imgs:print(i)# <img hidefocus="true" src="//www.baidu.com/img/bd_logo1.png" width="270" height="129"> # <img src="//www.baidu.com/img/gs.gif">

    總結

    以上是生活随笔為你收集整理的手把手带你入门Python爬虫(二、爬虫预备知识)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产又黄又爽视频 | 国产黄色片免费看 | 伊人快播 | 秋霞亚洲 | 欧美天堂网站 | 日韩 国产 在线 | 国产精品精东影业 | 久久久二区 | 在线免费看a | 97超级碰碰人妻中文字幕 | 亚洲天堂av免费在线观看 | www.久久久久久久久久 | 男人的天堂av女优 | 一区二区三区四区在线 | 国产簧片| 国产精品福利片 | 无码人妻丰满熟妇区96 | 少妇真人直播免费视频 | 亚洲视屏在线观看 | 色就是色综合 | 一区二区日本视频 | 国产人妖视频 | 欧美久久久久久 | 黄色成年视频 | 97色网| 草青青视频 | 91视频直接看 | 人与嘼交av免费 | 国产一二三四五区 | 91麻豆精品久久久久蜜臀 | 亚洲av少妇一区二区在线观看 | 日本高清视频一区二区三区 | 女生扒开腿让男生操 | 撕开少妇裙子猛然进入 | 男操女免费网站 | 一区二区一级片 | 五月色婷 | av网站一区二区 | 男人添女人囗交视频 | 国产女主播在线 | 99久久精品国产成人一区二区 | 瑟瑟网站免费 | 国产一区二区在线免费 | www.中文字幕在线观看 | 丁香婷婷视频 | 国产麻豆一精品一av一免费 | 国产欧美一区二区三区鸳鸯浴 | 99国产精品久久久久99打野战 | 国产精品久久久久久久av | 国产又黄又粗又猛又爽的视频 | 麻豆三级视频 | 五月丁香| 国产一级爱c视频 | 免费av黄色 | 成人国产精品入口免费视频 | 波多野结衣在线观看一区二区三区 | 中国新婚夫妻性猛交 | 国产精品成人国产乱 | 亚洲图片自拍偷拍区 | 香港三日本8a三级少妇三级99 | www免费网站在线观看 | 很嫩很紧直喷白浆h | 亚洲人人夜夜澡人人爽 | 国产精品扒开腿做爽爽爽视频 | 9l蝌蚪porny中文自拍 | 国产大片网站 | 国产原创麻豆 | 爱福利视频网 | 天天干天天操天天玩 | 精品伦精品一区二区三区视频 | 亚洲AV无码久久精品浪潮 | 看了下面会湿的视频 | 性xxxx| 国产精品国产三级国产Av车上的 | 红猫大本营在线观看的 | 丰满人妻一区二区三区53 | 成人看片网 | 懂色av一区二区三区免费观看 | 99热精品国产 | 久久99草| 九九热中文字幕 | 亚洲一卡一卡 | 五月婷婷开心中文字幕 | 超碰免费公开在线 | 欧洲av一区二区三区 | 亚洲黄色免费 | aaa久久| 国产a视频免费观看 | 成人欧美一区二区三区黑人免费 | 国产ts三人妖大战直男 | 性感美女毛片 | 中文国产| av字幕在线 | 成人久久在线 | 欧美特黄aaaaaa | 亚洲人免费视频 | 草久久免费视频 | 爱的色放在线 | 国产91亚洲精品 |