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

Python 爬蟲:教你四種姿勢解析提取數(shù)據(jù)

這篇具有很好參考價值的文章主要介紹了Python 爬蟲:教你四種姿勢解析提取數(shù)據(jù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、分析網(wǎng)頁

pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展以經(jīng)典的爬取豆瓣電影 Top250 信息為例。每條電影信息在 ol class 為 grid_view 下的 li 標(biāo)簽里,獲取到所有 li 標(biāo)簽的內(nèi)容,然后遍歷,就可以從中提取出每一條電影的信息。

翻頁查看url變化規(guī)律:

1頁:https://movie.douban.com/top250?start=0&filter=2頁:https://movie.douban.com/top250?start=25&filter=3頁:https://movie.douban.com/top250?start=50&filter=10頁:https://movie.douban.com/top250?start=225&filter=  

start參數(shù)控制翻頁,start = 25 * (page - 1)
pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

本文分別利用正則表達(dá)式、BeautifulSoup、PyQuery、Xpath來解析提取數(shù)據(jù),并將豆瓣電影 Top250 信息保存到本地。

二、正則表達(dá)式

正則表達(dá)式是一個特殊的字符序列,它能幫助你方便地檢查一個字符串是否與某種模式匹配,常用于數(shù)據(jù)清洗,也可以順便用于爬蟲,從網(wǎng)頁源代碼文本中匹配出我們想要的數(shù)據(jù)。

re.findall

  • 在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個列表,如果沒有找到匹配的,則返回空列表。

  • 注意:match和 search 是匹配一次;而 findall 匹配所有。

  • 語法格式為:findall(string[, pos[, endpos]])

  • string : 待匹配的字符串;pos : 可選參數(shù),指定字符串的起始位置,默認(rèn)為 0;endpos : 可選參數(shù),指定字符串的結(jié)束位置,默認(rèn)為字符串的長度。

示例如下:

import re  
text = """  
<div class="box picblock col3" style="width:186px;height:264px">  
<img src2="http://pic2.sc.chinaz.com/Files/pic/pic9/202007/apic26584_s.jpg" 123nfsjgnalt="山水風(fēng)景攝影圖片">  
<a target="_blank"   
<img src2="http://pic2.sc.chinaz.com/Files/pic/pic9/202007/apic26518_s.jpg" enrberonbialt="山脈湖泊山水風(fēng)景圖片">  
<a target="_blank"   
<img src2="http://pic2.sc.chinaz.com/Files/pic/pic9/202006/apic26029_s.jpg" woenigoigniefnirneialt="旅游景點(diǎn)山水風(fēng)景圖片">  
<a target="_blank"   
"""  
  
pattern = re.compile(r'\d+')  # 查找所有數(shù)字  
result1 = pattern.findall('me 123 rich 456 money 1000000000000')  
print(result1)  
img_info = re.findall('<img src2="(.*?)" .*alt="(.*?)">', text)  # 匹配src2 alt里的內(nèi)容  
  
for src, alt in img_info:  
    print(src, alt)  
   
['123', '456', '1000000000000']  
http://pic2.sc.chinaz.com/Files/pic/pic9/202007/apic26584_s.jpg 山水風(fēng)景攝影圖片  
http://pic2.sc.chinaz.com/Files/pic/pic9/202007/apic26518_s.jpg 山脈湖泊山水風(fēng)景圖片  
http://pic2.sc.chinaz.com/Files/pic/pic9/202006/apic26029_s.jpg 旅游景點(diǎn)山水風(fēng)景圖片  

代碼如下:

# -*- coding: UTF-8 -*-  

import requests  
import re  
from pandas import DataFrame  
from fake_useragent import UserAgent  
import logging  
  
# 日志輸出的基本配置  
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')  
# 隨機(jī)產(chǎn)生請求頭  
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')  
  
  
def random_ua():  
    headers = {  
        "Accept-Encoding": "gzip",  
        "Connection": "keep-alive",  
        "User-Agent": ua.random  
    }  
    return headers  
  
  
def scrape_html(url):  
    resp = requests.get(url, headers=random_ua())  
    # print(resp.status_code, type(resp.status_code))  
    if resp.status_code == 200:  
        return resp.text  
    else:  
        logging.info('請求網(wǎng)頁失敗')  
  
  
def get_data(page):  
    url = f"https://movie.douban.com/top250?start={25 * page}&filter="  
    html_text = scrape_html(url)  
    # 電影名稱  導(dǎo)演 主演  
    name = re.findall('<img width="100" alt="(.*?)" src=".*"', html_text)  
    director_actor = re.findall('(.*?)<br>', html_text)  
    director_actor = [item.strip() for item in director_actor]  
    # 上映時間  上映地區(qū)  電影類型信息   去除兩端多余空格  
    info = re.findall('(.*)&nbsp;/&nbsp;(.*)&nbsp;/&nbsp;(.*)', html_text)  
    time_ = [x[0].strip() for x in info]  
    area = [x[1].strip() for x in info]  
    genres = [x[2].strip() for x in info]  
    # 評分  評分人數(shù)  
    rating_score = re.findall('<span class="rating_num" property="v:average">(.*)</span>', html_text)  
    rating_num = re.findall('<span>(.*?)人評價</span>', html_text)  
    # 一句話引言  
    quote = re.findall('<span class="inq">(.*)</span>', html_text)  
    data = {'電影名': name, '導(dǎo)演和主演': director_actor,  
            '上映時間': time_, '上映地區(qū)': area, '電影類型': genres,  
            '評分': rating_score, '評價人數(shù)': rating_num, '引言': quote}  
    df = DataFrame(data)  
    if page == 0:  
        df.to_csv('movie_data2.csv', mode='a+', header=True, index=False)  
  
    else:  
        df.to_csv('movie_data2.csv', mode='a+', header=False, index=False)  
    logging.info(f'已爬取第{page + 1}頁數(shù)據(jù)')  
  
  
if __name__ == '__main__':  
    for i in range(10):  
        get_data(i)  

結(jié)果如下:pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

三、BeautifulSoup

find( )與 find_all( ) 是 BeautifulSoup 對象的兩個方法,它們可以匹配 html 的標(biāo)簽和屬性,把 BeautifulSoup 對象里符合要求的數(shù)據(jù)都提取出來:
pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

  • find( )只提取首個滿足要求的數(shù)據(jù)

  • find_all( )提取出的是所有滿足要求的數(shù)據(jù)

  • find( ) 或 find_all( ) 括號中的參數(shù):標(biāo)簽和屬性可以任選其一,也可以兩個一起使用,這取決于我們要在網(wǎng)頁中提取的內(nèi)容。括號里的class_,這里有一個下劃線,是為了和 python 語法中的類 class 區(qū)分,避免程序沖突。當(dāng)然,除了用 class 屬性去匹配,還可以使用其它屬性,比如 style 屬性等;只用其中一個參數(shù)就可以準(zhǔn)確定位的話,就只用一個參數(shù)檢索。如果需要標(biāo)簽和屬性同時滿足的情況下才能準(zhǔn)確定位到我們想找的內(nèi)容,那就兩個參數(shù)一起使用。
    pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

代碼如下:

# -*- coding: UTF-8 -*-  

import requests  
from bs4 import BeautifulSoup  
import openpyxl  
from fake_useragent import UserAgent  
import logging  
  
# 日志輸出的基本配置  
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')  
# 隨機(jī)產(chǎn)生請求頭  
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')  
wb = openpyxl.Workbook()    # 創(chuàng)建工作簿對象  
sheet = wb.active           # 獲取工作簿的活動表  
sheet.title = "movie"       # 工作簿重命名  
sheet.append(["排名", "電影名", "導(dǎo)演和主演", "上映時間", "上映地區(qū)", "電影類型", "評分", "評價人數(shù)", "引言"])  
  
  
def random_ua():  
    headers = {  
        "Accept-Encoding": "gzip",  
        "Connection": "keep-alive",  
        "User-Agent": ua.random  
    }  
    return headers  
  
  
def scrape_html(url):  
    resp = requests.get(url, headers=random_ua())  
    # print(resp.status_code, type(resp.status_code))  
    if resp.status_code == 200:  
        return resp.text  
    else:  
        logging.info('請求網(wǎng)頁失敗')  
  
  
def get_data(page):  
    global rank  
    url = f"https://movie.douban.com/top250?start={25 * page}&filter="  
    html_text = scrape_html(url)  
    soup = BeautifulSoup(html_text, 'html.parser')  
    lis = soup.find_all('div', class_='item')  
    for li in lis:  
        name = li.find('div', class_='hd').a.span.text  
        temp = li.find('div', class_='bd').p.text.strip().split('\n')  
        director_actor = temp[0]  
        temp1 = temp[1].rsplit('/', 2)  
        time_, area, genres = [item.strip() for item in temp1]  
        quote = li.find('p', class_='quote')  
        # 有些電影信息沒有一句話引言  
        if quote:  
            quote = quote.span.text  
        else:  
            quote = None  
        rating_score = li.find('span', class_='rating_num').text  
        rating_num = li.find('div', class_='star').find_all('span')[-1].text  
        sheet.append([rank, name, director_actor, time_, area, genres, rating_score, rating_num, quote])  
        logging.info([rank, name, director_actor, time_, area, genres, rating_score, rating_num, quote])  
        rank += 1  
  
  
if __name__ == '__main__':  
    rank = 1  
    for i in range(10):  
        get_data(i)  
    wb.save(filename='movie_info4.xlsx')  

結(jié)果如下:pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

四、PyQuery

  • 每個網(wǎng)頁,都有一定的特殊結(jié)構(gòu)和層級關(guān)系,并且很多節(jié)點(diǎn)都有 id 或 class 作為區(qū)分,我們可以借助它們的結(jié)構(gòu)和屬性來提取信息。

  • 強(qiáng)大的 HTML 解析庫:pyquery,利用它,我們可以直接解析 DOM 節(jié)點(diǎn)的結(jié)構(gòu),并通過 DOM 節(jié)點(diǎn)的一些屬性快速進(jìn)行內(nèi)容提取。

如下示例:在解析 HTML 文本的時候,首先需要將其初始化為一個 pyquery 對象。它的初始化方式有多種,比如直接傳入字符串、傳入 URL、傳入文件名等等。

from pyquery import PyQuery as pq  
  
html = '''  
<div>  
    <ul class="clearfix">  
        <li class="item-0">first item</li>  
        <li class="item-1"><a href="link2.html">second item</a></li>  
        <li><img src="http://pic.netbian.com/uploads/allimg/210107/215736-1610027856f6ef.jpg"></li>  
        <li><img src="http://pic.netbian.com//uploads/allimg/190902/152344-1567409024af8c.jpg"></li>   
    </ul>  
</div>  
'''  
  
doc = pq(html)  
print(doc('li'))  

結(jié)果如下:

<li class="item-0">first item</li>  
<li class="item-1"><a href="link2.html">second item</a></li>  
<li><img src="http://pic.netbian.com/uploads/allimg/210107/215736-1610027856f6ef.jpg"/></li>  
<li><img src="http://pic.netbian.com//uploads/allimg/190902/152344-1567409024af8c.jpg"/></li>  

首先引入 pyquery 這個對象,取別名為 pq,然后定義了一個長 HTML 字符串,并將其當(dāng)作參數(shù)傳遞給 pyquery 類,這樣就成功完成了初始化。接下來,將初始化的對象傳入 CSS 選擇器。在這個實例中,我們傳入 li 節(jié)點(diǎn),這樣就可以選擇所有的 li 節(jié)點(diǎn)。

代碼如下:

# -*- coding: UTF-8 -*-  

import requests  
from pyquery import PyQuery as pq  
import openpyxl  
from fake_useragent import UserAgent  
import logging  
  
# 日志輸出的基本配置  
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')  
# 隨機(jī)產(chǎn)生請求頭  
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')  
wb = openpyxl.Workbook()    # 創(chuàng)建工作簿對象  
sheet = wb.active           # 獲取工作簿的活動表  
sheet.title = "movie"       # 工作簿重命名  
sheet.append(["排名", "電影名", "導(dǎo)演和主演", "上映時間", "上映地區(qū)", "電影類型", "評分", "評價人數(shù)", "引言"])  
  
  
def random_ua():  
    headers = {  
        "Accept-Encoding": "gzip",  
        "Connection": "keep-alive",  
        "User-Agent": ua.random  
    }  
    return headers  
  
  
def scrape_html(url):  
    resp = requests.get(url, headers=random_ua())  
    # print(resp.status_code, type(resp.status_code))  
    if resp.status_code == 200:  
        return resp.text  
    else:  
        logging.info('請求網(wǎng)頁失敗')  
  
  
def get_data(page):  
    global rank  
    url = f"https://movie.douban.com/top250?start={25 * page}&filter="  
    html_text = scrape_html(url)  
    doc = pq(html_text)  
    lis = doc('.grid_view li')  
    for li in lis.items():  
        name = li('.hd a span:first-child').text()  
        temp = li('.bd p:first-child').text().split('\n')  
        director_actor = temp[0]  
        temp1 = temp[1].rsplit('/', 2)  
        time_, area, genres = [item.strip() for item in temp1]  
        quote = li('.quote span').text()  
        rating_score = li('.star .rating_num').text()  
        rating_num = li('.star span:last-child').text()  
        sheet.append([rank, name, director_actor, time_, area, genres, rating_score, rating_num, quote])  
        logging.info([rank, name, director_actor, time_, area, genres, rating_score, rating_num, quote])  
        rank += 1  
  
  
if __name__ == '__main__':  
    rank = 1  
    for i in range(10):  
        get_data(i)  
    wb.save(filename='movie_info3.xlsx')  

結(jié)果如下:pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

五、Xpath

Xpath是一個非常好用的解析方法,同時也作為爬蟲學(xué)習(xí)的基礎(chǔ),在后面的 Selenium 以及 Scrapy 框架中也會涉及到這部分知識。

首先我們使用 lxml 的 etree 庫,然后利用 etree.HTML 初始化,然后我們將其打印出來。其中,這里體現(xiàn)了 lxml 的一個非常實用的功能就是自動修正 html 代碼,大家應(yīng)該注意到了,最后一個 li 標(biāo)簽,其實我把尾標(biāo)簽刪掉了,是不閉合的。不過,lxml 因為繼承了 libxml2 的特性,具有自動修正 HTML 代碼的功能,通過 xpath 表達(dá)式可以提取標(biāo)簽里的內(nèi)容,如下所示:

from lxml import etree  
text = '''  
<div>  
    <ul>  
         <li class="item-0"><a href="link1.html">first item</a></li>  
         <li class="item-1"><a href="link2.html">second item</a></li>  
         <li class="item-inactive"><a href="link3.html">third item</a></li>  
         <li class="item-1"><a href="link4.html">fourth item</a></li>  
         <li class="item-0"><a href="link5.html">fifth item</a>  
     </ul>  
 </div>  
'''  
html = etree.HTML(text)  
result = etree.tostring(html)  
result1 = html.xpath('//li/@class')   # xpath表達(dá)式  
print(result1)  
print(result)  


['item-0', 'item-1', 'item-inactive', 'item-1', 'item-0']  
<html><body>  
<div>  
    <ul>  
         <li class="item-0"><a href="link1.html">first item</a></li>  
         <li class="item-1"><a href="link2.html">second item</a></li>  
         <li class="item-inactive"><a href="link3.html">third item</a></li>  
         <li class="item-1"><a href="link4.html">fourth item</a></li>  
         <li class="item-0"><a href="link5.html">fifth item</a></li>  
    </ul>  
</div>  
</body></html>  

代碼如下:

# -*- coding: UTF-8 -*-  

import requests  
from lxml import etree  
import openpyxl  
from fake_useragent import UserAgent  
import logging  
  
# 日志輸出的基本配置  
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')  
# 隨機(jī)產(chǎn)生請求頭  
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')  
wb = openpyxl.Workbook()    # 創(chuàng)建工作簿對象  
sheet = wb.active           # 獲取工作簿的活動表  
sheet.title = "movie"       # 工作簿重命名  
sheet.append(["排名", "電影名", "導(dǎo)演和主演", "上映時間", "上映地區(qū)", "電影類型", "評分", "評價人數(shù)", "引言"])  
  
  
def random_ua():  
    headers = {  
        "Accept-Encoding": "gzip",  
        "Connection": "keep-alive",  
        "User-Agent": ua.random  
    }  
    return headers  
  
  
def scrape_html(url):  
    resp = requests.get(url, headers=random_ua())  
    # print(resp.status_code, type(resp.status_code))  
    if resp.status_code == 200:  
        return resp.text  
    else:  
        logging.info('請求網(wǎng)頁失敗')  
  
  
def get_data(page):  
    global rank  
    url = f"https://movie.douban.com/top250?start={25 * page}&filter="  
    html = etree.HTML(scrape_html(url))  
    lis = html.xpath('//ol[@class="grid_view"]/li')  
    # 每個li標(biāo)簽里有每部電影的基本信息  
    for li in lis:  
        name = li.xpath('.//div[@class="hd"]/a/span[1]/text()')[0]  
        director_actor = li.xpath('.//div[@class="bd"]/p/text()')[0].strip()  
        info = li.xpath('.//div[@class="bd"]/p/text()')[1].strip()  
        # 按"/"切割成列表  
        _info = info.split("/")  
        # 得到 上映時間  上映地區(qū)  電影類型信息   去除兩端多余空格  
        time_, area, genres = _info[0].strip(), _info[1].strip(), _info[2].strip()  
        # print(time, area, genres)  
        rating_score = li.xpath('.//div[@class="star"]/span[2]/text()')[0]  
        rating_num = li.xpath('.//div[@class="star"]/span[4]/text()')[0]  
        quote = li.xpath('.//p[@class="quote"]/span/text()')  
        # 有些電影信息沒有一句話引言  加條件判斷  防止報錯  
        if len(quote) == 0:  
            quote = None  
        else:  
            quote = quote[0]  
        sheet.append([rank, name, director_actor, time_, area, genres, rating_score, rating_num, quote])  
        logging.info([rank, name, director_actor, time_, area, genres, rating_score, rating_num, quote])  
        rank += 1  
  
  
if __name__ == '__main__':  
    rank = 1  
    for i in range(10):  
        get_data(i)  
    wb.save(filename='movie_info1.xlsx')  

結(jié)果如下:pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

六、總結(jié)

  • 爬取網(wǎng)頁數(shù)據(jù)用正則表達(dá)式的話,可以直接從網(wǎng)頁源代碼文本中匹配,但出錯率較高,且熟悉正則表達(dá)式的使用也比較難,需要經(jīng)常翻閱文檔。

  • 實際爬取數(shù)據(jù)大多基于 HTML 結(jié)構(gòu)的 Web 頁面,網(wǎng)頁節(jié)點(diǎn)較多,各種層級關(guān)系??梢钥紤]使用 Xpath 解析器、BeautifulSoup解析器、PyQuery CSS解析器抽取結(jié)構(gòu)化數(shù)據(jù),使用正則表達(dá)式抽取非結(jié)構(gòu)化數(shù)據(jù)。

  • Xpath:可在 XML 中查找信息;支持 HTML 的查找 ;通過元素和屬性進(jìn)行導(dǎo)航,查找效率很高。在學(xué)習(xí) Selenium 以及 Scrapy 框架中也都會用到。

  • BeautifulSoup:依賴于 lxml 的解析庫,也可以從 HTML 或 XML 文件中提取數(shù)據(jù)。

  • PyQuery:Python仿照 jQuery 嚴(yán)格實現(xiàn),可以直接解析 DOM 節(jié)點(diǎn)的結(jié)構(gòu),并通過 DOM 節(jié)點(diǎn)的一些屬性快速進(jìn)行內(nèi)容提取。

對于爬取網(wǎng)頁結(jié)構(gòu)簡單的 Web 頁面,有些代碼是可以復(fù)用的,如下所示:

from fake_useragent import UserAgent  
  
# 隨機(jī)產(chǎn)生請求頭  
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')  
  
def random_ua():  
    headers = {  
        "Accept-Encoding": "gzip",  
        "User-Agent": ua.random  
    }  
    return headers  

偽裝請求頭,并可以隨機(jī)切換,封裝為函數(shù),便于復(fù)用。

def scrape_html(url):  
    resp = requests.get(url, headers=random_ua())  
    # print(resp.status_code, type(resp.status_code))  
    # print(resp.text)  
    if resp.status_code == 200:  
        return resp.text  
    else:  
        logging.info('請求網(wǎng)頁失敗')  

請求網(wǎng)頁,返回狀態(tài)碼為 200 說明能正常請求,并返回網(wǎng)頁源代碼文本。

最后

我們準(zhǔn)備了一門非常系統(tǒng)的爬蟲課程,除了為你提供一條清晰、無痛的學(xué)習(xí)路徑,我們甄選了最實用的學(xué)習(xí)資源以及龐大的主流爬蟲案例庫。短時間的學(xué)習(xí),你就能夠很好地掌握爬蟲這個技能,獲取你想得到的數(shù)據(jù)。

01 專為0基礎(chǔ)設(shè)置,小白也能輕松學(xué)會

我們把Python的所有知識點(diǎn),都穿插在了漫畫里面。

在Python小課中,你可以通過漫畫的方式學(xué)到知識點(diǎn),難懂的專業(yè)知識瞬間變得有趣易懂。
pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

你就像漫畫的主人公一樣,穿越在劇情中,通關(guān)過坎,不知不覺完成知識的學(xué)習(xí)。

02 無需自己下載安裝包,提供詳細(xì)安裝教程

pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

03 規(guī)劃詳細(xì)學(xué)習(xí)路線,提供學(xué)習(xí)視頻

pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

04 提供實戰(zhàn)資料,更好鞏固知識

pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

05 提供面試資料以及副業(yè)資料,便于更好就業(yè)

pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展
pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展

這份完整版的Python全套學(xué)習(xí)資料已經(jīng)上傳CSDN,朋友們?nèi)绻枰部梢話呙柘路絚sdn官方二維碼或者點(diǎn)擊主頁和文章下方的微信卡片獲取領(lǐng)取方式,【保證100%免費(fèi)】
pyquery 提取,python,爬蟲,開發(fā)語言,學(xué)習(xí),數(shù)據(jù)分析,大數(shù)據(jù),職場和發(fā)展文章來源地址http://www.zghlxwxcb.cn/news/detail-792185.html

到了這里,關(guān)于Python 爬蟲:教你四種姿勢解析提取數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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ī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • Python beautifulsoup4解析 數(shù)據(jù)提取 基本使用

    Beautiful Soup是Python的一個網(wǎng)頁解析庫,處理快捷; 支持多種解析器,功能強(qiáng)大。教程細(xì)致講解Beautiful Soup的深入使用、節(jié)點(diǎn)選擇器、CSS選擇器、Beautiful Soup4的方法選擇器等重要知識點(diǎn),是學(xué)好爬蟲的基礎(chǔ)課程。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 建議把代碼復(fù)

    2023年04月08日
    瀏覽(17)
  • 『爬蟲四步走』手把手教你使用Python抓取并存儲網(wǎng)頁數(shù)據(jù)!

    『爬蟲四步走』手把手教你使用Python抓取并存儲網(wǎng)頁數(shù)據(jù)!

    爬蟲是Python的一個重要的應(yīng)用,使用Python爬蟲我們可以輕松的從互聯(lián)網(wǎng)中抓取我們想要的數(shù)據(jù),**本文將基于爬取B站視頻熱搜榜單數(shù)據(jù)并存儲為例,詳細(xì)介紹Python爬蟲的基本流程。**如果你還在入門爬蟲階段或者不清楚爬蟲的具體工作流程,那么應(yīng)該仔細(xì)閱讀本文! 第一步:

    2024年02月04日
    瀏覽(49)
  • python爬蟲數(shù)據(jù)解析xpath

    python爬蟲數(shù)據(jù)解析xpath

    下載地址:百度網(wǎng)盤 請輸入提取碼 第一步: 下載好文件后會得到一個沒有擴(kuò)展名的文件,重命名該文件將其改為.rar或者.zip等壓縮文件,解壓之后會得到一個.crx文件和一個.pem文件。新建一個文件夾,將這兩個文件放在該文件夾(本人將其命名為xpath-helper)內(nèi)。 第二步: 將

    2024年02月10日
    瀏覽(16)
  • Python小姿勢 - # Python網(wǎng)絡(luò)爬蟲之如何通過selenium模擬瀏覽器登錄微博

    Python小姿勢 - # Python網(wǎng)絡(luò)爬蟲之如何通過selenium模擬瀏覽器登錄微博

    Python網(wǎng)絡(luò)爬蟲之如何通過selenium模擬瀏覽器登錄微博 微博登錄接口很混亂,需要我們通過selenium來模擬瀏覽器登錄。 首先我們需要安裝selenium,通過pip安裝: ``` pip install selenium ``` 然后我們需要下載一個瀏覽器驅(qū)動,推薦使用Chrome,下載地址:http://chromedriver.storage.googleapis.c

    2024年02月03日
    瀏覽(94)
  • python爬蟲之json數(shù)據(jù)解析

    日常爬蟲過程中我們對于爬取到的網(wǎng)頁數(shù)據(jù)需要進(jìn)行解析,因為大多數(shù)數(shù)據(jù)是不需要的,所以我們需要進(jìn)行數(shù)據(jù)解析,常用的數(shù)據(jù)解析方式有正則表達(dá)式,xpath,bs4。今天我們重點(diǎn)來了解一下什么是json。歡迎收藏學(xué)習(xí),喜歡點(diǎn)贊支持。 json(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交

    2024年02月11日
    瀏覽(13)
  • 『python爬蟲』06. 數(shù)據(jù)解析之re正則解析(保姆級圖文)

    『python爬蟲』06. 數(shù)據(jù)解析之re正則解析(保姆級圖文)

    歡迎關(guān)注 『python爬蟲』 專欄,持續(xù)更新中 歡迎關(guān)注 『python爬蟲』 專欄,持續(xù)更新中 Regular Expression, 正則表達(dá)式, ?種使?表達(dá)式的?式對字符串,進(jìn)?匹配的語法規(guī)則(按照一定規(guī)則的查找) ??源代碼本質(zhì)上就是?個超?的字符串, 用正則就好像是在我們的txt中查找指定

    2024年02月02日
    瀏覽(24)
  • 用 Python 從單個文本中提取關(guān)鍵字的四種超棒的方法

    用 Python 從單個文本中提取關(guān)鍵字的四種超棒的方法

    自然語言處理分析的最基本和初始步驟是提取,在NLP中,我們有許多算法可以幫助我們提取文本數(shù)據(jù)的。本文中,云朵君將和大家一起學(xué)習(xí)四種即簡單又有效的方法,它們分別是 Rake、Yake、Keybert 和 Textrank 。并將簡單概述下每個方法的使用場景,然后使用附加示

    2023年04月08日
    瀏覽(15)
  • 【頭歌】——數(shù)據(jù)分析與實踐-python-網(wǎng)絡(luò)爬蟲-Scrapy爬蟲基礎(chǔ)-網(wǎng)頁數(shù)據(jù)解析-requests 爬蟲-JSON基礎(chǔ)

    第1關(guān) 爬取網(wǎng)頁的表格信息 第2關(guān) 爬取表格中指定單元格的信息 第3關(guān) 將單元格的信息保存到列表并排序 第4關(guān) 爬取div標(biāo)簽的信息 第5關(guān) 爬取單頁多個div標(biāo)簽的信息 第6關(guān) 爬取多個網(wǎng)頁的多個div標(biāo)簽的信息 第1關(guān) Scarpy安裝與項目創(chuàng)建 第2關(guān) Scrapy核心原理 第1關(guān) XPath解析網(wǎng)頁 第

    2024年01月22日
    瀏覽(29)
  • Day:004(1) | Python爬蟲:高效數(shù)據(jù)抓取的編程技術(shù)(數(shù)據(jù)解析)

    Day:004(1) | Python爬蟲:高效數(shù)據(jù)抓取的編程技術(shù)(數(shù)據(jù)解析)

    數(shù)據(jù)解析-正則表達(dá)式 在前面我們已經(jīng)搞定了怎樣獲取頁面的內(nèi)容,不過還差一步,這么多雜亂的代碼夾雜文字我們怎樣 把它提取出來整理呢?下面就開始介紹一個十分強(qiáng)大的工具,正則表達(dá)式! ????????正則表達(dá)式是對字符串操作的一種邏輯公式,就是用事先定義好的

    2024年04月12日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包