日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫获取数据保存到数据库中(超级详细,保证一看就会)

發布時間:2023/12/31 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的節點;/h1[1]為選取的節點下的第一個h1節點,如果沒有[1]則是獲取所有的,可以通過循環進行獲取數據 etreeHtml.xpath('//*[@class="c1text1"]/h1[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爬蟲實操

本次實例以爬取我的CSDN文章列表信息保存到數據庫為案列

3-1.獲取xpath

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

完整代碼展示:

# 導入需要的庫 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}')"# 執行sqlprint(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]/h4/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爬虫获取数据保存到数据库中(超级详细,保证一看就会)的全部內容,希望文章能夠幫你解決所遇到的問題。

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