亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲如何獲取數據并保存到數據庫中

發布時間:2022-06-13 10:00:10 來源:億速云 閱讀:381 作者:iii 欄目:開發技術

本篇內容主要講解“Python爬蟲如何獲取數據并保存到數據庫中”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python爬蟲如何獲取數據并保存到數據庫中”吧!

    1.簡介介紹

    -網絡爬蟲(又稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
    -一般在瀏覽器上可以獲取到的,通過爬蟲也可以獲取到,常見的爬蟲語言有PHP,JAVA,C#,C++,Python,為啥我們經常聽到說的都是Python爬蟲,這是因為python爬蟲比較簡單,功能比較齊全。

    2.Xpath獲取頁面信息

    通過Xpath進行爬蟲就是獲取到頁面html后通過路徑的表達式來選取標簽節點,沿著路徑選取需要爬取的數據。

    Xpath常用表達式:

    表達式描述
    /從根節點選取(取子節點)
    //選擇的當前節點選擇文檔中的節點
    .選取當前節點。
    …選取當前節點的父節點。
    @選取屬性
    *表示任意內容(通配符)
    |運算符可以選取多個路徑

    Xpath常用函數:

    函數用法解釋
    startswith()xpath(‘//div[starts-with(@id,”celent”)]‘)#選取id值以celent開頭的div節點
    contains()xpath(‘//div[contains(@id,”celent”)]‘)#選取id值包含celent的div節點
    and()xpath(‘//div[contains(@id,”celent”) and contains(@id,”in”)]‘)#選取id值包含celent的div節點
    text()_.xpath(’./div/div[4]/a/em/text()’)#選取em標簽下文本內容

    Xpath實操解析:

    # 案例1
    # //為從當前html中選取節點;[@class="c1text1"]為獲取所有的class為c1text1的節點;/h2[1]為選取的節點下的第一個h2節點,如果沒有[1]則是獲取所有的,可以通過循環進行獲取數據
    etreeHtml.xpath('//*[@class="c1text1"]/h2[1]/text()')
    
    # 案例2
    #//為從當前html中選取節點;[@class="c1text1"]為獲取所有的class為c1text1的節點;/a為獲取當前節點下的所有a標簽節點,得到一個ObjectList;通過for循環獲取里面每個標簽數據,./@src為獲取當前節點的src屬性值
    etreeHtml2 = etreeHtml.xpath('//*[@class="c1text1"]/a')
    for _ in etreeHtml2: 
    	etreeHtml.xpath(./@src)

    3.通過Xpath爬蟲實操

    3-1.獲取xpath

    通過F12打開開發者模式,點擊左上角圖標可參考下圖,選擇需要爬取數據的容器,在右邊選擇復制選擇xpath就可以得到xpath路徑了(//*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div);

    Python爬蟲如何獲取數據并保存到數據庫中

    完整代碼展示:

    # 導入需要的庫
    import requests
    from lxml import etree
    import pymysql
    
    
    # 文章詳情信息類
    class articleData():
        def __init__(self, title, abstract, path,date):
            self.title = title #文章名稱
            self.abstract = abstract #文章摘要
            self.path = path #文章路徑
            self.date = date #發布時間
    
    
        def to_string(self):
            print("文章名稱:"+self.title
                  +";文章摘要:"+self.abstract
                  +";文章路徑:"+self.path
                  +";發布時間:"+self.date)
    
    #保存狗狗詳情數據
    #保存數據
    def saveData(DataObject):
        count = pymysql.connect(
            host='xx.xx.xx.xx',  # 數據庫地址
            port=3306,  # 數據庫端口
            user='xxxxx',  # 數據庫賬號
            password='xxxxxx',  # 數據庫密碼
            db='xxxxxxx'  # 數據庫名
        )
        # 創建數據庫對象
        db = count.cursor()
        # 寫入sql
        # print("寫入數據:"+DataObject.to_string())
        sql = f"insert into article_detail(title,abstract,alias,path,date) " \
              f"values ('{DataObject.title}','{DataObject.abstract}','{DataObject.path}','{DataObject.date}')"
        # 執行sql
        print(sql)
        db.execute(sql)
        # 保存修改內容
        count.commit()
        db.close()
    
    # 爬取數據的方向
    def getWebData():
        # 網站頁面路徑
        url = "https://blog.csdn.net/BadBoyxiaolin?spm=1000.2115.3001.5343"
        # 請求頭,模擬瀏覽器請求
        header = {
            "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
        }
        # 獲取頁面所有節點代碼
        html = requests.get(url=url, headers=header)
        # 打印頁面代碼查看
        # print(html.text)
        # 如果亂碼可以設置編碼格式
        # html.encoding = 'gb2312'
        # 通過xpath獲取數據對應節點
        etreeHtml = etree.HTML(html.text)
        dataHtml = etreeHtml.xpath('//*[@class="mainContent"]/div/div/div')
        # 循環獲取數據
        for _ in dataHtml:
            # ''.join()是將內容轉換為字符串可以后面接replace數據進行處理
            title = ''.join(_.xpath('./article/a/div[1]/h5/text()'))#文章標題
            abstract = ''.join(_.xpath('./article/a/div[2]/text()'))#文章摘要
            path = ''.join(_.xpath('./article/a/@href'))#文章路徑
            date = ''.join(_.xpath('./article/a/div[3]/div/div[2]/text()')).replace(' ','').replace('·','').replace('發布博客','')#發布時間
            #初始化文章類數據
            article_data = articleData(title,abstract,path,date)
            article_data.to_string() #打印數據看看是否對
            #保存數據到數據庫
            # saveData(article_data)
    
    if __name__ == "__main__":
        getWebData()

    到此,相信大家對“Python爬蟲如何獲取數據并保存到數據庫中”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    潼南县| 门头沟区| 陆川县| 泌阳县| 平利县| 玉树县| 郴州市| 梅河口市| 廊坊市| 全州县| 镶黄旗| 泾川县| 万安县| 彭州市| 三原县| 廊坊市| 当涂县| 双峰县| 内丘县| 扶余县| 武鸣县| 银川市| 绥德县| 灯塔市| 奉贤区| 霞浦县| 凌源市| 吉林市| 乌鲁木齐县| 顺义区| 镇雄县| 湘阴县| 诸暨市| 湘西| 武宣县| 乐平市| 蓝山县| 通州区| 玉树县| 象山县| 织金县|