導航:首頁 > 源碼編譯 > python爬蟲資料庫入庫源碼

python爬蟲資料庫入庫源碼

發布時間:2023-07-07 21:37:25

A. python爬蟲的工作步驟

當前處於一個大數據的時代,一般網站數據來源有二:網站用戶自身產生的數據和網站從其他來源獲取的數據,今天要分享的是如何從其他網站獲取你想要的數據。

目前最適合用於寫爬蟲的語言是python,python中最受歡迎的爬蟲框架是scrapy,本文圍繞scrapy來展開講解爬蟲是怎麼工作的。

1.如下圖所示,爬蟲從編寫的spider文件中的start_urls開始,這個列表中的url就是爬蟲抓取的第一個網頁,它的返回值是該url對應網頁的源代碼,我們可以用默認的parse(self,response)函數去列印或解析這個源代碼

2.我們獲取到源代碼之後,就可以從網頁源代碼中找到我們想要的信息或需要進一步訪問的url,提取信息這一步,scrapy中集成了xpath,正則(re),功能十分強大,提取到信息之後會通過yield進入到中間件當中。

中間件包括爬蟲中間件和下載中間件,爬蟲中間件主要用於設置處理爬蟲文件中的代碼塊,下載中間件主要用於判斷爬蟲進入網頁前後的爬取狀態,在此中間件中,你可以根據爬蟲的返回狀態去做進一步判斷。

最後我們將yield過來的item,即就是我們想要的數據會在pipeline.py文件中進行處理,存入資料庫,寫入本地文件,都可以在這里進行,另外,為了減少代碼冗餘,建議所有與設置參數有關的參數,都寫在settings.py中去

B. python爬蟲 源碼

import os,requests
from bs4 import BeautifulSoup

headers ={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'
}

for i in range(105,200):

try:
url = 'https://pvp.qq.com/web201605/herodetail/' + str(i) +'.shtml'

response = requests.get(url,headers)
response.encoding = 'gbk'

soup = BeautifulSoup(response.text,'html.parser')

# skill_name = soup.find('p','skill-name')
# skill_desc = soup.find('p','skill-desc')
# print(skill_name.text)
# print(skill_desc.text)

name = soup.find("h2", "cover-name").text
# print(name)

story = soup.find('div', 'pop-bd').text
if story =='\n':
print("\n沒有【%d】%s的故事!"%(i,name))
else:

story_ = story.replace('。' ,'。\n' )
story_ = story.replace('\n' ,'\t>>>' )
print(story_[0:30]+"...")
# os.mkdir('C:\\Users\\Crystal\\Desktop\\英雄故事2')
# os.mkdir('C:\\Users\\28459\\Desktop\\測試\\')
os.chdir('C:\\Users\\28459\\Desktop\\測試\\')
open('%s'%name + '.txt' ,'w').write(story_)
print('【%d】%s的故事已保存!'%(i,name))
print()
except AttributeError:
print("\n沒有編號為%d的英雄!"%i)

C. python把爬到的數據放到資料庫(python爬蟲怎麼把爬的數據寫進文件里)

MySQL

是一個關系型資料庫管理系統,由瑞典MySQLAB公司開發,目前屬於Oracle旗下產品。MySQL是最流行的關系型資料庫管理系統之一,在WEB應用方面,MySQL是最好的RDBMS(,關系資料庫管理系統)應用軟體。

MySQL是一種關系資料庫管理系統,關系資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

MySQL所使用的SQL語言是用於訪問資料庫的最常用標准化語言。MySQL軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇MySQL作為網站資料庫。

相關推薦:《Python基礎教程》

應用環境

與其他的大型數據孝中源庫例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有餘,而且由於MySQL是開放源碼軟體,因此可以大大降低總體擁有成本。

MongoDB

是一個基於分布式文件存儲的資料庫。由C語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDB是一個介於關系資料庫和非關系資料庫之間的產品,是非關系資料庫當中功能最豐富培攜,最像關系資料庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關系資料庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

特點

它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:

*面向集合存儲,易存儲對象類型的數據。

mongodb集群參考

*模式自由。

*支持動態查詢。

*支持完全索引,包含內部對象。

*支持查詢。

*支持復制和故障恢復。

*使用高效的二進制數據存巧態儲,包括大型對象(如視頻等)。

*自動處理碎片,以支持雲計算層次的擴展性。

*支持RUBY,PYTHON,JAVA,C,PHP,C#等多種語言。

*文件存儲格式為BSON(一種JSON的擴展)。

*可通過網路訪問。

D. 如何用python爬取網頁中隱藏的div內容

你說的隱藏的div內容,應該是動態載入的數據吧,不在網頁源碼中顯示,只在載入網頁時才請求數據進行顯示,一般情況下,這種數據都保存在一個json文件中,只要抓包分析出這個json文件的url地址,然後再根據json文件結構進行解析,很快就能獲取到動態載入的div數據,下面我以爬取人人貸上面的散標數據為例,簡單介紹一下python如何爬蘆枝取div動態載入的數據,實驗環境win10+python3.6+pycharm5.0,主要步驟如下:

1.首先,打開散標數族咐據,如下,爬取的信息主要包括年利率、借款標題、期限、金額和進度這5個欄位信息:

右鍵對應元素進行檢查,可以看出所有的數據嵌套在div標簽中,如下:

打開網頁源碼,我們按Ctrl+F查找對應的數據,會發現所查找的數據都未在網頁源碼中,如下,即數據都是動態載入,所以直接解析原網頁是找不到div嵌套的數據的:

2.接著,我們按F12調出開發者工具,依次點擊「Network」->「XHR」,F5刷新頁面,就會看到動態載入的json文件,查看這個文件,內容如下,左邊為json文件的url地址,右邊就是我們需要爬取的div數據:

3.最後對應上面的json文件,我們就可以直接獲取並解析json了,這里主要用到requests和json這2個模塊,其中requests用於根據url地址獲取json文件,json用於解析json文件,提取出我們所需要的信息,即div動態載入的數據,測試代碼如下,非常簡單:

運行程序,截圖如下,已經成功爬取到div載入的數據:

至此,我們就完成了利用python爬取div動態載入的數據。總的來說,整個過程非常簡單,最主要的陪穗敏還是抓包分析,只要你有一定的爬蟲基礎,熟悉一下上面的代碼,多調試幾遍程序,很快就能掌握的,當然,你也可以使用selenium進行爬取,直接解析就行,網上也有相關教程和資料可供參考,非常豐富,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言。

E. python怎麼看源碼進行網路爬蟲

在我們日常上網瀏覽網頁的時候,經常會看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來做桌面壁紙,或者用來做設計的素材。
我們最常規的做法就是通過滑鼠右鍵,選擇另存為。但有些圖片滑鼠右鍵的時候並沒有另存為選項,還有辦法就通過就是通過截圖工具截取下來,但這樣就降低圖片的清晰度。好吧~!其實你很厲害的,右鍵查看頁面源代碼。
我們可以通過python 來實現這樣一個簡單的爬蟲功能,把我們想要的代碼爬取到本地。下面就看看如何使用python來實現這樣一個功能。

一,獲取整個頁面數據

首先我們可以先獲取要下載圖片的整個頁面信息。
getjpg.py

#coding=utf-8
import urllib

def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html

html = getHtml("http://tieba..com/p/2738151262")

print html

Urllib 模塊提供了讀取web頁面數據的介面,我們可以像讀取本地文件一樣讀取www和ftp上的數據。首先,我們定義了一個getHtml()函數:
urllib.urlopen()方法用於打開一個URL地址。
read()方法用於讀取URL上的數據,向getHtml()函數傳遞一個網址,並把整個頁面下載下來。執行程序就會把整個網頁列印輸出。

二,篩選頁面中想要的數據

Python 提供了非常強大的正則表達式,我們需要先要了解一點python 正則表達式的知識才行。
http://www.cnblogs.com/fnng/archive/2013/05/20/3089816.html

假如我們網路貼吧找到了幾張漂亮的壁紙,通過到前段查看工具。找到了圖片的地址,如:src=」https://gss0..com/70cFfyinKgQFm2e88IuM_a/forum......jpg」pic_ext=」jpeg」

修改代碼如下:

import re
import urllib

def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html

def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
return imglist

html = getHtml("http://tieba..com/p/2460150866")
print getImg(html)

我們又創建了getImg()函數,用於在獲取的整個頁面中篩選需要的圖片連接。re模塊主要包含了正則表達式:
re.compile() 可以把正則表達式編譯成一個正則表達式對象.
re.findall() 方法讀取html 中包含 imgre(正則表達式)的數據。
運行腳本將得到整個頁面中包含圖片的URL地址。

三,將頁面篩選的數據保存到本地

把篩選的圖片地址通過for循環遍歷並保存到本地,代碼如下:

#coding=utf-8
import urllib
import re

def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html

def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
x = 0
for imgurl in imglist:
urllib.urlretrieve(imgurl,'%s.jpg' % x)
x+=1

html = getHtml("http://tieba..com/p/2460150866")

print getImg(html)

這里的核心是用到了urllib.urlretrieve()方法,直接將遠程數據下載到本地。
通過一個for循環對獲取的圖片連接進行遍歷,為了使圖片的文件名看上去更規范,對其進行重命名,命名規則通過x變數加1。保存的位置默認為程序的存放目錄。
程序運行完成,將在目錄下看到下載到本地的文件。

F. 如何爬蟲天貓店鋪數據python

本編博客是關於爬取天貓店鋪中指定店鋪的所有商品基礎信息的爬蟲,爬蟲運行只需要輸入相應店鋪的域名名稱即可,信息將以csv表格的形式保存,可以單店爬取也可以增加一個循環進行同時爬取。

源碼展示

首先還是完整代碼展示,後面會分解每個函數的意義。

# -*- coding: utf-8 -*-
import requests
import json
import csv
import random
import re
from datetime import datetime
import time

class TM_procs(object):
def __init__(self,storename):
self.storename = storename
self.url = ''.format(storename)
self.headers = {
"user-agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 "
"(KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
}
datenum = datetime.now().strftime('%Y%m%d%H%M')
self.filename = '{}_{}.csv'.format(self.storename, datenum)
self.get_file()

def get_file(self):
'''創建一個含有標題的表格'''
title = ['item_id','price','quantity','sold','title','totalSoldQuantity','url','img']
with open(self.filename,'w',newline='') as f:
writer = csv.DictWriter(f,fieldnames=title)
writer.writeheader()
return

def get_totalpage(self):
'''提取總頁碼數'''
num = random.randint(83739921,87739530)
enrl = '/shop/shop_auction_search.do?sort=s&p=1&page_size=12&from=h5&ajson=1&_tm_source=tmallsearch&callback=jsonp_{}'
url = self.url + enrl.format(num)
html = requests.get(url,headers=self.headers).text
infos = re.findall('(({.*}))',html)[0]
infos = json.loads(infos)
totalpage = infos.get('total_page')
return int(totalpage)

def get_procts(self,page):
'''提取單頁商品列表'''
num = random.randint(83739921, 87739530)
enrl = '/shop/shop_auction_search.do?sort=s&p={}&page_size=12&from=h5&ajson=1&_tm_source=tmallsearch&callback=jsonp_{}'
url = self.url + enrl.format(page,num)
html = requests.get(url, headers=self.headers).text
infos = re.findall('(({.*}))', html)[0]
infos = json.loads(infos)
procts = infos.get('items')
title = ['item_id', 'price', 'quantity', 'sold', 'title', 'totalSoldQuantity', 'url', 'img']
with open(self.filename, 'a', newline='') as f:
writer = csv.DictWriter(f, fieldnames=title)
writer.writerows(procts)

def main(self):
'''循環爬取所有頁面寶貝'''
total_page = self.get_totalpage()
for i in range(1,total_page+1):
self.get_procts(i)
print('總計{}頁商品,已經提取第{}頁'.format(total_page,i))
time.sleep(1+random.random())

if __name__ == '__main__':
storename = 'uniqlo'
tm = TM_procs(storename)
tm.main()

上面代碼是選擇了優衣庫作為測試店鋪,直接輸入優衣庫店鋪的域名中關鍵詞即可,最終表格會按照店鋪名稱和時間名詞。

代碼解讀

導入庫說明

G. 如何用python爬取網站數據

這里簡單介紹一下吧,以抓取網站靜態、動態2種數據為慧返拍例,實驗環境win10+python3.6+pycharm5.0,主要內容如下:

抓取網站靜態數據(數據在網頁源碼中):以糗事網路網站數據為例

1.這里假設我們抓取的數據如下,主要包括用戶昵稱、內容、好笑數和評論數這4個欄位,如下:

對應的網頁源碼如下,包含我們所需要的數據:

2.對應網頁結構,主要代碼如下,很簡單,主要用到requests+BeautifulSoup,其中requests用於請求頁面,BeautifulSoup用於解析頁面:

程序運行截圖如下,已經成功爬取到數據:

抓取網站動態數據(數據不在網頁源碼中,json等文件中):以人人貸網站數據為例

1.這里假設我們爬取的是債券數據,主要包括年利率世型、借款標題、期限、金額和進度這5個欄位信息,截圖如下:

打開網頁源碼中,可以發現數據不在網頁源碼中,按F12抓包分析時,才發現在一個json文件中,如下:

2.獲取到json文件的url後,我們就可以爬取對應數據了,這里使用的包與上面類似,因為是json文件,所以還用了json這個包(解析json),主要內容如下:

程序運行截圖如下,前羨已經成功抓取到數據:

至此,這里就介紹完了這2種數據的抓取,包括靜態數據和動態數據。總的來說,這2個示例不難,都是入門級別的爬蟲,網頁結構也比較簡單,最重要的還是要會進行抓包分析,對頁面進行分析提取,後期熟悉後,可以藉助scrapy這個框架進行數據的爬取,可以更方便一些,效率更高,當然,如果爬取的頁面比較復雜,像驗證碼、加密等,這時候就需要認真分析了,網上也有一些教程可供參考,感興趣的可以搜一下,希望以上分享的內容能對你有所幫助吧。

H. python爬蟲爬下來的數據怎麼導入到MySQL

下載mysql.connector庫

然後把爬蟲爬到的數據通過mysql裡面的insert語句查到資料庫,當然也可以建表,一般我沒用python建表 是先建好再寫數據的

importmysql.connector
conn=mysql.connector.connect(
user='root',
password='root',
host='127.0.0.1',
port='3306',
database='test_demo'
)

cursor=conn.cursor()

cursor.execute("INSERTINTOtest_user(`uuid`,`user_name`,`user_level`)VALUES(%s,%s,%s)",[id,user_name,user_level])
cursor.execute("INSERTINTOtieba_user_detail(`user_name`,`user_exp`,`user_sex`,`tieba_age`,`tieba_note`,`user_favorites`,`user_fans`)VALUES(%s,%s,%s,%s,%s,%s,%s)",[user_name,user_exp,user_sex,tieba_age,tieba_note,user_favorites,user_fans])

print('**************%s%s數據保存成功**************'%(user_rank,user_name))
conn.commit()
cursor.close()

插進入就這樣的

閱讀全文

與python爬蟲資料庫入庫源碼相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163