日韩性视频-久久久蜜桃-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爬虫(二、爬虫预备知识)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 日本一区免费电影 | 中文字幕天堂在线 | 无码人妻精品一区二区三区99不卡 | 日韩欧美亚洲在线 | 免费啪啪网址 | 久久99国产精品成人 | 日本黄色小网站 | 天天干天天操天天舔 | 日本人妻不卡一区二区三区中文字幕 | 亚洲系列中文字幕 | 在线不卡的av | 日韩一区二区三区高清 | 直接看毛片 | 91视频地址 | 一级一毛片 | 全球av在线 | 好吊操精品视频 | 国产一级片麻豆 | 闺蜜张开腿让我爽了一夜 | 波多野结衣 在线 | 99精品视频在线 | 亚洲偷偷 | 18性xxxxx性猛交| 日本精品三级 | 国产精品一二三 | 亚洲熟妇无码一区二区三区导航 | 丁香六月婷婷激情 | 日本免费高清 | 中文在线а√在线 | 91视频看| 午夜欧美在线 | 久久久久久一区二区三区 | 自拍中文字幕 | 国内自拍青青草 | 亚洲成人一二三区 | 91久久精品国产91性色69 | 天天操网站 | 动漫美女被艹 | 人人上人人干 | 噼里啪啦免费看 | 三点尽露的大尺度国产 | 成人毛片在线视频 | 亚洲天堂五月 | 国产精品欧美精品 | 韩国色网| 人人av在线 | 欧美日韩a级片 | 日韩国产欧美在线观看 | 一区二区国产电影 | 欧美xxxxxx片免费播放软件 | 桃色网站在线观看 | 亚洲熟妇国产熟妇肥婆 | 黄网站免费视频 | 国产aⅴ爽av久久久久成人 | 美女乱淫 | 免费麻豆av | 777精品 | wwwxx在线观看 | 一区二区在线免费观看 | www.色com | 亚洲一区二区三区电影在线观看 | 亚洲欧美日韩色 | 91在线观看免费高清 | 国语久久| 97精品视频在线观看 | 性欧美精品中出 | 毛片在线免费视频 | 96在线视频| 爱情岛论坛永久入址测速 | 精品免费在线观看 | 欧美日韩午夜 | 欧美在线观看免费高清 | 伊人丁香| 能看的av| 日本a大片 | 乳揉みま痴汉4在线播放 | 潘金莲一级淫片aaaaaa播放 | 欧美日韩一区二区三区四区 | 欧美人与动性xxxxx杂性 | 丰满少妇大力进入 | 好av在线 | 国产21页 | 国产chinese男男网站大全 | 自拍偷拍亚洲天堂 | 国产激情视频一区二区三区 | 1024视频在线 | 国产,日韩,欧美 | 精品国产欧美一区二区 | 国产极品美女高潮无套嗷嗷叫酒店 | 99re国产| 国产在线观看一区二区三区 | 日本欧美一区二区三区 | 狠狠干亚洲色图 | 欧美黄色aaa | 免费在线看黄色片 | 国产一区二区在线播放 | 欧美大片免费高清观看 | 午夜桃色| 久久曰视频|