在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python-爬蟲(chóng)開(kāi)發(fā)02

汽車(chē)電子技術(shù) ? 來(lái)源:程序猿知秋 ? 作者:程序猿知秋 ? 2023-02-16 15:57 ? 次閱讀

谷歌瀏覽器分析post地址

  • 方式一: 使用瀏覽器自帶開(kāi)發(fā)者工具( f12 快捷鍵 ),通過(guò)查詢form表單獲取

圖片

  • 方式二: 直接點(diǎn)擊登錄按鈕,查看訪問(wèn)的地址(需要注意下面請(qǐng)求時(shí)傳遞的參數(shù),如果部分參數(shù)不知道如何得到,可能需要跟蹤js文件查看)

圖片

  • 方式三: 部分網(wǎng)站的PC端請(qǐng)求時(shí)需要的參數(shù)較多,但是移動(dòng)端會(huì)少些,所以可以切換到移動(dòng)端看看請(qǐng)求地址與參數(shù)

圖片

requests小技巧

  • requests.util.dict_from_cookiejar 把cookie對(duì)象轉(zhuǎn)化為字典
  • 請(qǐng)求SSL證書(shū)驗(yàn)證
    • r=requests.get(url,verify=False)
  • 設(shè)置超時(shí)
    • r=requests.get(url,timeout=時(shí)間(單位是秒))
  • 使用斷言判斷狀態(tài)碼是否成功
    • assert respnose.status_code==200

爬蟲(chóng)數(shù)據(jù)處理

數(shù)據(jù)分類(lèi)

  • 非結(jié)構(gòu)化數(shù)據(jù):html 等
    • 處理方法:使用 正則表達(dá)式、xpath 處理數(shù)據(jù)
  • 結(jié)構(gòu)化數(shù)據(jù):json、xml等
    • 處理方法:轉(zhuǎn)化為python中的數(shù)據(jù)類(lèi)型

數(shù)據(jù)處理之JSON

  • JSON(JavaScript Object Notation) ,是一種輕量級(jí)的數(shù)據(jù)交換格式,它使得人們很容易進(jìn)行閱讀和編寫(xiě)。同時(shí)也方便了機(jī)器進(jìn)行解析和生成。適用于進(jìn)行數(shù)據(jù)交互的場(chǎng)景,比如網(wǎng)站的前后臺(tái)之間的數(shù)據(jù)交互。
  • 爬取豆瓣電視劇列表示例
import json
import requests


class DouBanMovie:
    def __init__(self):
        self.url="https://m.douban.com/rexxar/api/v2/subject_collection/tv_domestic/items?os=android&for_mobile=1&start=0&count=18&loc_id=108288"
        self.headers={
            "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Mobile Safari/537.36",
            "Referer": "https://m.douban.com/tv/chinese"
        }


    def get_data(self):
        response = requests.get(self.url, headers=self.headers)
        if response.status_code==200:
            # 將json字符串轉(zhuǎn)化為python中的數(shù)據(jù)類(lèi)型
            result=json.loads(response.content.decode())
            return result


    def write_file(self,fileName,data):
        '''寫(xiě)入文件'''


        # json.dumps能夠把python中的類(lèi)型數(shù)據(jù)轉(zhuǎn)化成json字符串
        data=json.dumps(data,ensure_ascii=False)
        with open(fileName,"w",encoding="utf-8") as f:
            f.write(data)


    def read_file(self,fileName):
        '''讀取文件數(shù)據(jù)'''


        with open(fileName, "r", encoding="utf-8") as f:
            # 加載json類(lèi)型數(shù)據(jù)的文件
            result=json.load(f)
        return result




    def run(self):
        # 獲取數(shù)據(jù)
        result=self.get_data()
        # 將豆瓣數(shù)據(jù)寫(xiě)入文件
        self.write_file("douban.txt",result)
        # 讀取文件內(nèi)容
        readResult=self.read_file("douban.txt")


        print(readResult)




if __name__ == '__main__':
    douban=DouBanMovie()
    douban.run()

數(shù)據(jù)處理之正則表達(dá)式

  • 正則表達(dá)式定義
    • 就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)” 規(guī)則字符串 “,這個(gè)”規(guī)則字符串“用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯
  • 常用正則表達(dá)式的方法
    • re.compile(編譯)
    • pattern.match(從頭開(kāi)始匹配一個(gè))
    • pattern.search(從任何位置開(kāi)始匹配一個(gè))
    • pattern.findall(匹配所有)
    • pattern.sub(替換)
  • Python正則表達(dá)式中的re.S,re.M,re.I的作用
    • 正則表達(dá)式可以包含一些可選標(biāo)志修飾符來(lái)控制匹配的模式。修飾符被指定為一個(gè)可選的標(biāo)志。多個(gè)標(biāo)志可以通過(guò)按位 OR(|) 它們來(lái)指定。如 re.I | re.M 被設(shè)置成 I 和 M 標(biāo)志

圖片

圖片

圖片

  • python中 r 的用法
    • 'r'是防止字符轉(zhuǎn)義的 如果路徑中出現(xiàn)'\\t'的話 不加r的話\\t就會(huì)被轉(zhuǎn)義 而加了'r'之后'\\t'就能保留原有的樣子

圖片

  • 示例(提取成語(yǔ)故事)
import requests
import re


class ChengYu:
    def __init__(self):
        self.url="http://www.hydcd.com/cy/gushi/0259hs.htm"
        self.headers={
            "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Mobile Safari/537.36"
        }


    def get_data(self):
        response=requests.get(self.url,self.headers)
        result=None
        if response.status_code==200:
            result=response.content.decode("gb2312")
        return result


    def handle_data(self,html_str_list):
        if html_str_list==None or len(html_str_list)==0:
            return None


        html_str=html_str_list[0]
        result=re.sub(r"\\r|\\t|
"
,"",html_str) return result def run(self): # 訪問(wèn)網(wǎng)頁(yè)信息 html_str=self.get_data() # 用正則表達(dá)式提取 成語(yǔ)故事 html_str_list=re.findall(r"(.*?)",html_str,re.S) # 處理語(yǔ)句中的換行、制表等標(biāo)識(shí)體符 result=self.handle_data(html_str_list) print(result) if __name__ == '__main__': chengYu=ChengYu() chengYu.run()

數(shù)據(jù)處理之xpath

  • lxml 是一款高性能的python html/xml 解析器,我們可以利用xpath,來(lái)快速定位特定元素以及獲取節(jié)點(diǎn)信息
  • xpath(xml path langueage)是一門(mén)在 html/xml 文檔中查找信息的語(yǔ)言,可以用來(lái)在html/xml 文檔中對(duì)元素和屬性進(jìn)行遍歷
  • 官網(wǎng)地址:https://www.w3school.com.cn/xpath/index.asp
  • xpath 節(jié)點(diǎn)選擇語(yǔ)法
    • xpath 使用路徑表達(dá)式來(lái)選取xml,文檔中的節(jié)點(diǎn)或者節(jié)點(diǎn)集,這些路徑表達(dá)式和我們?cè)诔R?guī)的電腦文件系統(tǒng)中看到的表達(dá)式非常相似
表達(dá)式 描述
node name 選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn)
/ 從根節(jié)點(diǎn)選取
// 從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置
. 選取當(dāng)前節(jié)點(diǎn)
.. 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)
@ 選取屬性
  • 常用節(jié)點(diǎn)的選擇工具
    • Chrome插件 XPath Helper
    • 開(kāi)源的 XPath表達(dá)式編輯工具:XML Quire(xml 格式文件可用)
    • Firefox插件 XPath Checker
  • lxml庫(kù)
    • 安裝lxml:pip install lxml
    • 使用方法:** from lxml import etree**
    • 利用 etree.HTML ,將字符串轉(zhuǎn)化為 Element對(duì)象
    • Element對(duì)象具有xpath的方法:html=etree.HTML(字符串)
  • 示例
import requests
import re
from lxml import etree


class ChengYu:
    def __init__(self):
        self.url="http://www.hydcd.com/cy/gushi/0259hs.htm"
        self.headers={
            "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Mobile Safari/537.36"
        }


    def get_data(self):
        response=requests.get(self.url,self.headers)
        result=None
        if response.status_code==200:
            result=response.content.decode("gb2312")
        return result


    def handle_data(self,html_str_list):
        if html_str_list==None or len(html_str_list)==0:
            return None


        html_str=html_str_list[0]+html_str_list[1]
        result=re.sub(r"\\r|\\t|
"
,"",html_str) return result def run(self): # 訪問(wèn)網(wǎng)頁(yè)信息 html_str=self.get_data() # 用xpath提取元素 html=etree.HTML(html_str) result=html.xpath("http://font[@color=\"#10102C\"]/text()") # 處理語(yǔ)句中的換行、制表等標(biāo)識(shí)體符 result=self.handle_data(result) print(result) if __name__ == '__main__': chengYu=ChengYu() chengYu.run()
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)站
    +關(guān)注

    關(guān)注

    2

    文章

    259

    瀏覽量

    23251
  • 數(shù)據(jù)交換
    +關(guān)注

    關(guān)注

    0

    文章

    104

    瀏覽量

    17972
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    119

    瀏覽量

    7021
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python數(shù)據(jù)爬蟲(chóng)學(xué)習(xí)內(nèi)容

    ,利用爬蟲(chóng),我們可以解決部分?jǐn)?shù)據(jù)問(wèn)題,那么,如何學(xué)習(xí)Python數(shù)據(jù)爬蟲(chóng)能?1.學(xué)習(xí)Python基礎(chǔ)知識(shí)并實(shí)現(xiàn)基本的爬蟲(chóng)過(guò)程一般獲取數(shù)據(jù)的過(guò)
    發(fā)表于 05-09 17:25

    Python爬蟲(chóng)與Web開(kāi)發(fā)庫(kù)盤(pán)點(diǎn)

    Python爬蟲(chóng)和Web開(kāi)發(fā)均是與網(wǎng)頁(yè)相關(guān)的知識(shí)技能,無(wú)論是自己搭建的網(wǎng)站還是爬蟲(chóng)爬去別人的網(wǎng)站,都離不開(kāi)相應(yīng)的Python庫(kù),以下是常用的
    發(fā)表于 05-10 15:21

    0基礎(chǔ)入門(mén)Python爬蟲(chóng)實(shí)戰(zhàn)課

    學(xué)習(xí)資料良莠不齊爬蟲(chóng)是一門(mén)實(shí)踐性的技能,沒(méi)有實(shí)戰(zhàn)的課程都是騙人的!所以這節(jié)Python爬蟲(chóng)實(shí)戰(zhàn)課,將幫到你!課程從0基礎(chǔ)入門(mén)開(kāi)始,受眾人群廣泛:如畢業(yè)大學(xué)生、轉(zhuǎn)行人群、對(duì)Python
    發(fā)表于 07-25 09:28

    Python爬蟲(chóng)簡(jiǎn)介與軟件配置

    Python爬蟲(chóng)練習(xí)一、爬蟲(chóng)簡(jiǎn)介1. 介紹2. 軟件配置二、爬取南陽(yáng)理工OJ題目三、爬取學(xué)校信息通知四、總結(jié)五、參考一、爬蟲(chóng)簡(jiǎn)介1. 介紹網(wǎng)絡(luò)爬蟲(chóng)
    發(fā)表于 01-11 06:32

    詳細(xì)用Python寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)

    詳細(xì)用Python寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)
    發(fā)表于 09-07 08:40 ?32次下載
    詳細(xì)用<b class='flag-5'>Python</b>寫(xiě)網(wǎng)絡(luò)<b class='flag-5'>爬蟲(chóng)</b>

    完全自學(xué)指南Python爬蟲(chóng)BeautifulSoup詳解

    完全自學(xué)指南Python爬蟲(chóng)BeautifulSoup詳解
    發(fā)表于 09-07 08:55 ?39次下載
    完全自學(xué)指南<b class='flag-5'>Python</b><b class='flag-5'>爬蟲(chóng)</b>BeautifulSoup詳解

    WebSpider——多個(gè)python爬蟲(chóng)項(xiàng)目下載

    此文檔包含多個(gè)python爬蟲(chóng)項(xiàng)目
    發(fā)表于 03-26 09:29 ?3次下載

    python爬蟲(chóng)入門(mén)教程之python爬蟲(chóng)視頻教程分布式爬蟲(chóng)打造搜索引擎

    本文檔的主要內(nèi)容詳細(xì)介紹的是python爬蟲(chóng)入門(mén)教程之python爬蟲(chóng)視頻教程分布式爬蟲(chóng)打造搜索引擎
    發(fā)表于 08-28 15:32 ?29次下載

    python為什么叫爬蟲(chóng) python工資高還是java的高

      人工智能的現(xiàn)世,讓python學(xué)習(xí)成風(fēng),由于其發(fā)展前景好,薪資高,一時(shí)成為眾多語(yǔ)言的首選。Python是一門(mén)非常適合開(kāi)發(fā)網(wǎng)絡(luò)爬蟲(chóng)的編程語(yǔ)言,十分的簡(jiǎn)潔方便所以是網(wǎng)絡(luò)
    發(fā)表于 02-19 17:56 ?570次閱讀

    python爬蟲(chóng)框架有哪些

    本視頻主要詳細(xì)介紹了python爬蟲(chóng)框架有哪些,分別是Django、CherryPy、Web2py、TurboGears、Pylons、Grab、BeautifulSoup、Cola。
    的頭像 發(fā)表于 03-22 16:13 ?6863次閱讀

    Python爬蟲(chóng):使用哪種協(xié)議的代理IP最佳?

    網(wǎng)絡(luò)大數(shù)據(jù)要抓取信息,大多需要經(jīng)過(guò)python爬蟲(chóng)工作,爬蟲(chóng)能夠幫助我們將頁(yè)面的信息抓取下來(lái)。
    的頭像 發(fā)表于 06-28 16:25 ?2003次閱讀

    Python寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)

    Python寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)的方法說(shuō)明。
    發(fā)表于 06-01 11:55 ?21次下載

    Python-爬蟲(chóng)開(kāi)發(fā)01

    網(wǎng)絡(luò)爬蟲(chóng)(被稱(chēng)為 網(wǎng)頁(yè)蜘蛛,網(wǎng)絡(luò)機(jī)器人 ),就是 模擬客戶端發(fā)送網(wǎng)絡(luò)請(qǐng)求 ,接收請(qǐng)求響應(yīng),一種按照一定的規(guī)則,自動(dòng)地抓取互聯(lián)網(wǎng)信息的程序
    的頭像 發(fā)表于 02-16 15:55 ?645次閱讀
    <b class='flag-5'>Python-</b><b class='flag-5'>爬蟲(chóng)</b><b class='flag-5'>開(kāi)發(fā)</b>01

    利用Python編寫(xiě)簡(jiǎn)單網(wǎng)絡(luò)爬蟲(chóng)實(shí)例

    利用 Python編寫(xiě)簡(jiǎn)單網(wǎng)絡(luò)爬蟲(chóng)實(shí)例2 實(shí)驗(yàn)環(huán)境python版本:3.3.5(2.7下報(bào)錯(cuò)
    發(fā)表于 02-24 11:05 ?14次下載

    如何解決Python爬蟲(chóng)中文亂碼問(wèn)題?Python爬蟲(chóng)中文亂碼的解決方法

    如何解決Python爬蟲(chóng)中文亂碼問(wèn)題?Python爬蟲(chóng)中文亂碼的解決方法 在Python爬蟲(chóng)過(guò)程
    的頭像 發(fā)表于 01-12 15:11 ?2586次閱讀
    主站蜘蛛池模板: 天堂视频在线免费观看 | 国产精品自在线天天看片 | 直接黄91麻豆网站 | 国产三级精品三级 | 一级特黄女毛毛片 | 黄视频网站在线观看 | 国产视频分类 | 加勒比精品久久一区二区三区 | 六月丁香啪啪 | 在线视频永久在线视频 | 天天躁天天爽 | 在线观看免费xx高清视频 | 国产全部理论片线观看 | 国产日韩精品欧美一区色 | 国产一级又色又爽又黄大片 | 丁香婷婷六月天 | 精品色综合 | 中国性猛交xxxxx免费看 | 四虎影视最新 | 久久久噜久噜久久综合 | 狠狠色噜噜狠狠狠狠999米奇 | 欧美在线免费 | 爱爱帝国亚洲一区二区三区 | 操久久久| 欧美a一| 国产特黄特色的大片观看免费视频 | www射com| 日本簧片在线观看 | 午夜影视在线免费观看 | 在线观看三级网站 | 亚洲 丝袜 制服 欧美 另类 | 五月激情婷婷丁香 | 色播影院性播免费看 | 国产重口老太和小伙乱视频 | 永久黄网站色视频免费 | 四虎网站最新网址 | 久久久久久久久综合影视网 | 六月丁香中文字幕 | 午夜精品久久久久久久第一页 | 能可以直接看的av网址 | 九七婷婷狠狠成人免费视频 |