国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python簡單網(wǎng)頁爬蟲

這篇具有很好參考價(jià)值的文章主要介紹了python簡單網(wǎng)頁爬蟲。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、python爬蟲手法

  • 正則匹配:難度較大,不建議
  • BeautifulSoup或者xpath:文檔結(jié)構(gòu)清晰【推薦】
    實(shí)際使用常常是:BeautifulSoup或者xpath匹配到對應(yīng)的dom節(jié)點(diǎn),然后正則提取想要的數(shù)據(jù)

二、BeautifulSoup / xpath 安裝使用

(1)BeautifulSoup :
安裝:
pip install lxml
pip install bs4
使用:

from bs4 import beautifulsoup

soup = BeautifulSoup(html, 'lxml')   # html是網(wǎng)頁文本
p_list = soup.select('p')

三、BeautifulSoup 語法精髓

- 提供的用于數(shù)據(jù)解析的方法和屬性:
	- soup.tagName:返回的是文檔中第一次出現(xiàn)的tagName對應(yīng)的標(biāo)簽(html標(biāo)簽)
	- soup.find():
		- find('tagName'):等同于soup.div
	- 屬性定位:
		- soup.find('div',class_/id/attr='attrName'):返回符合要求的第一個(gè)標(biāo)簽
	- soup.find_all('tagName'):返回符合要求的所有標(biāo)簽(列表)

- select:
	- select('某種選擇器(id,class,標(biāo)簽.·,選擇器)·),返回的是一個(gè)列表。
	- 層級選擇器:
		- soup.select('.className > ul > li > a'): >表示的是一個(gè)層級
		- soup.select('.className > ul a'):空格表示的多個(gè)層級
- 獲取標(biāo)簽之間的文本數(shù)據(jù):
	- soup.a.text/string/get_text()
	- text/get_text():可以獲取某一個(gè)標(biāo)簽中所有的文本內(nèi)容
	- string:只可以獲取該標(biāo)簽下面直系的文本內(nèi)容
- 獲取標(biāo)簽中屬性值:
	- soup.a['href '

四、xpath語法精髓

- 環(huán)境的安裝:
	- pip install lxml
- 如何實(shí)例化一個(gè)etree對象:from lxml import etree
	- 1.將本地的htmL文檔中的源碼數(shù)據(jù)加載到etree對象中:
		etree.parse(filePath)
	- 2.可以將從互聯(lián)網(wǎng)上獲取的源碼數(shù)據(jù)加載到該對象中
		etree.HTML('page_text')
		xpath('xpath表達(dá)式')
- xpath表達(dá)式【和linux的文件路徑操作一樣】:
	- / : 根節(jié)點(diǎn),節(jié)點(diǎn)分隔符,
    - // : 任意位置,可以是多個(gè)層級
    - .   當(dāng)前節(jié)點(diǎn)
    - ..  父級節(jié)點(diǎn)
    - @   屬性定位,如:/div[@class='className']   tag[@attrName="attrValue"]
    - 索引定位: //div[@class="className"]/p[3]: 索引是從1開始的
- 取文本:
	- /text()獲取的是標(biāo)簽中直系的文本內(nèi)容
	- //text()標(biāo)簽中非直系的文本內(nèi)容(所有的文本內(nèi)容)
- 取屬性:
	- /dattrName ==> img/src

五、爬蟲例子代碼

爬取國家重點(diǎn)保護(hù)野生植物的信息,網(wǎng)站:中國珍稀瀕危植物信息系統(tǒng)文章來源地址http://www.zghlxwxcb.cn/news/detail-475947.html

import json
from bs4 import BeautifulSoup
from lxml import etree
import requests
import re


def request_url(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
    }
    try:
        response = requests.get(url, headers = headers)
        if response.status_code == 200:
            return response.text
    except requests.RequestException as e:
        print('===>>>請求異常' + e)
        return None


def parse_result(html):
	"""使用BeautifulSoup進(jìn)行解析html"""
    soup = BeautifulSoup(html, 'lxml')
    tr_list = soup.select('tr')
    for tr in tr_list:
        print("解析結(jié)果:" + str(tr))
        td_items = tr.select('.td2')
        if len(td_items) == 0:
            continue
        yield {
            '中文名': re.sub('\s', '', td_items[0].text),
            '拉丁名': re.sub('\s', '', td_items[1].text),
            '科名': re.sub('\s', '', td_items[2].text),
            'I級':  re.sub('\s', '', td_items[3].text),
            'II級': re.sub('\s', '', td_items[4].text),
        }

def xpath_parse_result(html):
	"""使用xpath進(jìn)行解析html"""
    html_doc = etree.HTML(html)
    tr_list = html_doc.xpath('//body/form/div[@class="divmenuh"]//table[@class="table1"]//tr')
    for tr in tr_list:
        print("解析結(jié)果:" + str(tr))
        td_items = tr.xpath("./td[@class='td2']")
        if len(td_items) == 0:
            continue
        yield {
            '中文名': re.sub('\s', '', td_items[0].xpath(".//text()")[0]),
            '拉丁名': re.sub('\s', '', td_items[1].xpath(".//text()")[0]),
            '科名': re.sub('\s', '', td_items[2].xpath(".//text()")[0]),
            'I級':  re.sub('\s', '', td_items[3].xpath(".//text()")[0]),
            'II級': re.sub('\s', '', td_items[4].xpath(".//text()")[0]),
        }     

def plant_spider(page):
    url = 'http://www.iplant.cn/rep/protlist?page=' + str(page)
    html = request_url(url)
    if None == html:
        print("===>>>請求失?。? + url)
        return
    items = parse_result(html)    # 解析過濾我們想要的信息
    # items = xpath_parse_result(html)  # 使用xpath進(jìn)行解析
    with open('國家重點(diǎn)保護(hù)野生植物(2021版).txt', 'a', encoding='UTF-8') as f:
        for item in items:
            print('開始寫入數(shù)據(jù) ====> ' + str(item))
            f.write(json.dumps(item, ensure_ascii=False) + '\n')

if __name__ == "__main__":
# 爬取國家重點(diǎn)保護(hù)野生植物的信息
	for i in range(1, 58):
        plant_spider(i)

到了這里,關(guān)于python簡單網(wǎng)頁爬蟲的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 制作一個(gè)簡單HTML個(gè)人網(wǎng)頁網(wǎng)頁(HTML+CSS)源碼

    制作一個(gè)簡單HTML個(gè)人網(wǎng)頁網(wǎng)頁(HTML+CSS)源碼

    一個(gè)簡單的HTML網(wǎng)頁,可用于大學(xué)html期末作業(yè),照片都是網(wǎng)上找的 看一下成品圖: 主頁代碼,這里的link href=\\\"images/css.css\\\" rel=\\\"stylesheet\\\" type=\\\"text/css\\\" /是引入css樣的,images里面裝的是css文件(完整源碼見文末) ?

    2024年02月11日
    瀏覽(45)
  • ??創(chuàng)意網(wǎng)頁:打造簡潔美觀的網(wǎng)頁輪播圖(HTML簡單實(shí)現(xiàn)輪播圖)操作簡單可以直接使用

    ??創(chuàng)意網(wǎng)頁:打造簡潔美觀的網(wǎng)頁輪播圖(HTML簡單實(shí)現(xiàn)輪播圖)操作簡單可以直接使用

    ? 博主: 命運(yùn)之光 ?? 專欄: Python星辰秘典 ?? 專欄: web開發(fā)(簡單好用又好看) ?? 專欄: Java經(jīng)典程序設(shè)計(jì) ?? 博主的其他文章: 點(diǎn)擊進(jìn)入博主的主頁 前言: 歡迎踏入我的Web項(xiàng)目專欄,一段神奇而令人陶醉的數(shù)字世界! ?? 在這里,我將帶您穿越時(shí)空,揭開屬于

    2024年02月17日
    瀏覽(18)
  • 用js做一個(gè)簡單的網(wǎng)頁,用javascript做一個(gè)網(wǎng)頁

    用js做一個(gè)簡單的網(wǎng)頁,用javascript做一個(gè)網(wǎng)頁

    大家好,小編為大家解答用javascript寫簡單網(wǎng)頁家鄉(xiāng)的介紹代碼的問題。很多人還不知道用javascript寫簡單網(wǎng)頁小游戲,現(xiàn)在讓我們一起來看看吧! 八、JavaScript基礎(chǔ) 1.JavaScript JavaScript簡稱JS是用于制作網(wǎng)頁的動(dòng)態(tài)效果的,如:頁面的彈出廣告、浮動(dòng)廣告、下拉菜單、表單驗(yàn)證等

    2024年02月03日
    瀏覽(26)
  • 一個(gè)簡單的HTML網(wǎng)頁——傳統(tǒng)節(jié)日春節(jié)網(wǎng)頁(HTML+CSS)

    一個(gè)簡單的HTML網(wǎng)頁——傳統(tǒng)節(jié)日春節(jié)網(wǎng)頁(HTML+CSS)

    ??精彩專欄推薦 ??文末獲取聯(lián)系 ?? 作者簡介: 一個(gè)熱愛把邏輯思維轉(zhuǎn)變?yōu)榇a的技術(shù)博主 ?? 作者主頁: 【主頁——??獲取更多優(yōu)質(zhì)源碼】 ?? web前端期末大作業(yè): 【??畢設(shè)項(xiàng)目精品實(shí)戰(zhàn)案例 (1000套) 】 ?? 程序員有趣的告白方式:【??HTML七夕情人節(jié)表白網(wǎng)頁制作 (

    2024年01月21日
    瀏覽(22)
  • 制作一個(gè)簡單HTML個(gè)人網(wǎng)頁網(wǎng)頁(HTML+CSS)大話西游之大圣娶親電影網(wǎng)頁設(shè)計(jì)

    制作一個(gè)簡單HTML個(gè)人網(wǎng)頁網(wǎng)頁(HTML+CSS)大話西游之大圣娶親電影網(wǎng)頁設(shè)計(jì)

    HTML實(shí)例網(wǎng)頁代碼, 本實(shí)例適合于初學(xué)HTML的同學(xué)。該實(shí)例里面有設(shè)置了css的樣式設(shè)置,有div的樣式格局,這個(gè)實(shí)例比較全面,有助于同學(xué)的學(xué)習(xí),本文將介紹如何通過從頭開始設(shè)計(jì)個(gè)人網(wǎng)站并將其轉(zhuǎn)換為代碼的過程來實(shí)踐設(shè)計(jì)。 ? 【作者主頁——??獲取更多優(yōu)質(zhì)源碼】 ? 【學(xué)

    2024年02月04日
    瀏覽(25)
  • 【Github】的簡單使用(網(wǎng)頁版)

    【Github】的簡單使用(網(wǎng)頁版)

    目錄 Git和Github Github基礎(chǔ)概念 注冊Github賬號 創(chuàng)建倉庫及文件 新建倉庫 新建文件 文件的編輯和刪除 編輯或修改文件 刪除文件 文件的上傳 文件的查找及下載 文件的查找 文件的下載 Issues Fork 開源項(xiàng)目貢獻(xiàn)流程 什么是Git Git是一個(gè)免費(fèi)、開源的版本控制軟件 什么是版本控制系

    2024年01月16日
    瀏覽(43)
  • 一個(gè)簡單的HTML網(wǎng)頁 、個(gè)人主頁網(wǎng)頁設(shè)計(jì)(HTML+CSS)

    一個(gè)簡單的HTML網(wǎng)頁 、個(gè)人主頁網(wǎng)頁設(shè)計(jì)(HTML+CSS)

    ??精彩專欄推薦???????????? ?? 作者簡介: 一個(gè)熱愛把邏輯思維轉(zhuǎn)變?yōu)榇a的技術(shù)博主 ?? 作者主頁: 【主頁——??獲取更多優(yōu)質(zhì)源碼】 ?? web前端期末大作業(yè): 【??畢設(shè)項(xiàng)目精品實(shí)戰(zhàn)案例 (1000套) 】 ?? 程序員有趣的告白方式:【??HTML七夕情人節(jié)表白網(wǎng)頁制作

    2024年02月04日
    瀏覽(28)
  • 一個(gè)簡單的HTML網(wǎng)頁(千與千尋電影) 大二學(xué)生網(wǎng)頁設(shè)計(jì)與制作 電影主題網(wǎng)頁制作

    一個(gè)簡單的HTML網(wǎng)頁(千與千尋電影) 大二學(xué)生網(wǎng)頁設(shè)計(jì)與制作 電影主題網(wǎng)頁制作

    HTML實(shí)例網(wǎng)頁代碼, 本實(shí)例適合于初學(xué)HTML的同學(xué)。該實(shí)例里面有設(shè)置了css的樣式設(shè)置,有div的樣式格局,這個(gè)實(shí)例比較全面,有助于同學(xué)的學(xué)習(xí),本文將介紹如何通過從頭開始設(shè)計(jì)個(gè)人網(wǎng)站并將其轉(zhuǎn)換為代碼的過程來實(shí)踐設(shè)計(jì)。 1 網(wǎng)頁簡介 :此作品為學(xué)生個(gè)人主頁網(wǎng)頁設(shè)計(jì)題材

    2024年02月06日
    瀏覽(21)
  • java Selenium 實(shí)現(xiàn)簡單的網(wǎng)頁操作

    官方文檔 :入門指南 | Selenium? Selenium是一個(gè)用于Web應(yīng)用測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。 所以使用這個(gè)前端測試話工具,可以自動(dòng)化做很多事情,比如自動(dòng)化抓取網(wǎng)頁內(nèi)容,俗稱網(wǎng)絡(luò)爬蟲,其實(shí)搜索引擎本身就是一種網(wǎng)絡(luò)爬蟲技術(shù)

    2024年02月14日
    瀏覽(24)
  • HTML+CSS簡單的網(wǎng)頁制作期末作業(yè)——浙江旅游景點(diǎn)介紹網(wǎng)頁制作

    HTML+CSS簡單的網(wǎng)頁制作期末作業(yè)——浙江旅游景點(diǎn)介紹網(wǎng)頁制作

    家鄉(xiāng)旅游景點(diǎn)網(wǎng)頁作業(yè)制作 網(wǎng)頁代碼運(yùn)用了DIV盒子的使用方法,如盒子的嵌套、浮動(dòng)、margin、border、background等屬性的使用,外部大盒子設(shè)定居中,內(nèi)部左中右布局,下方橫向浮動(dòng)排列,大學(xué)學(xué)習(xí)的前端知識點(diǎn)和布局方式都有運(yùn)用,CSS的代碼量也很足、很細(xì)致,使用hover來完成

    2024年02月04日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包