版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章通過PyCharm建立一個項目,項目名稱自定。在該項目中實現(xiàn)一個WelcometoPython!程序。PyCharm創(chuàng)建項目。首先,雙擊桌面的PyCharm圖標(biāo)打開PyCharm程序,選擇“File”—>“NewProject”,然后在彈出的窗口中的location文本框中自定義項目名稱為:你的項目名稱,并將該項目存放在位置:項目存放路徑。將鼠標(biāo)移到項目根節(jié)點,右擊鼠標(biāo),選擇“New”—>“PythonFile”。這樣就可以在PyCharm中創(chuàng)建一個基于Python3.6基礎(chǔ)解釋器作為編程環(huán)境的Python文件。在此,將該文件命名為:你的文件名稱在右邊的代碼編輯框中輸入:print("WelcometoPython!")運(yùn)行該文件即可。2.通過PyCharm建立一個項目,項目名稱自定。在該項目中定義一個列表,并使用列表函數(shù)append()向該列表中添加數(shù)據(jù),最后使用for循環(huán)語句遍歷輸出。list1=['hello','world',2020]
list1.append('python')##使用append()添加元素
print("list1[3]:",list1[3])#輸出添加的元素
foreinlist1:#循環(huán)遍歷列表元素
print(e)第二章1.通過導(dǎo)入requests庫,使用該庫爬取Python官方網(wǎng)站頁面數(shù)據(jù)。importrequests
req=requests.get('/')
req.encoding='utf-8'
print(req.text)2.通過導(dǎo)入lxml和BeautifulSoup,使用該庫解析爬取的Python官方網(wǎng)站頁面數(shù)據(jù)。frombs4importBeautifulSoup
req=requests.get('/')
req.encoding='utf-8'
soup=BeautifulSoup(req.text,'lxml')
print(soup.title.string)
item=soup.select('#top>nav>ul>li.python-meta.current_item.selectedcurrent_branch.selected>a')
print(item)第三章1.使用Python讀取和輸出CSV和JSON數(shù)據(jù)。讀取CSV,數(shù)據(jù)自定義。importcsv
file_to_use='學(xué)生信息.csv'
withopen(file_to_use,'r',encoding='utf-8')asf:
r=csv.reader(f)
file_header=next(r)
print(file_header)
forid,file_header_colinenumerate(file_header):
print(id,file_header_col)
forrowinr:
ifrow[2]=='學(xué)號':
print(row)寫入CSV,數(shù)據(jù)自定義。importcsv
withopen('學(xué)生信息.csv','a',encoding='utf-8')asf:
wr=csv.writer(f)
wr.writerows([['大數(shù)據(jù)運(yùn)維','hadoop','高級技術(shù)員','張三'],['大數(shù)據(jù)開發(fā)','python','中級技術(shù)員','李四']])
wr.writerow(['大數(shù)據(jù)運(yùn)維','hadoop','高級技術(shù)員','張三'])
wr.writerow(['大數(shù)據(jù)開發(fā)','python','中級技術(shù)員','李四'])2.使用Python連接MySQL,創(chuàng)建數(shù)據(jù)庫和表,并實現(xiàn)增刪查改。importpymysql
db=pymysql.connect("localhost","root","你的密碼","你的數(shù)據(jù)庫名稱")
cursor=db.cursor()
cursor.execute("DROPTABLEIFEXISTSemployee")
#創(chuàng)建表格
sql="""CREATETABLE`employee`(
`id`int(10)NOTNULLAUTO_INCREMENT,
`first_name`char(20)NOTNULL,
`last_name`char(20)DEFAULTNULL,
`age`int(11)DEFAULTNULL,
`sex`char(1)DEFAULTNULL,
`income`floatDEFAULTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;"""
cursor.execute(sql)
print("CreatedtableSuccessfully.")
#插入
sql2="""INSERTINTOEMPLOYEE(FIRST_NAME,
LAST_NAME,AGE,SEX,INCOME)
VALUES('Mac','Su',20,'M',5000)"""
cursor.execute(sql2)
print("InserttableSuccessfully.")
#查詢
sql3="""SELECT*FROMEMPLOYEE"""
cursor.execute(sql3)
print("SELECTtableSuccessfully.")
#修改
sql4="""UPDATEEMPLOYEESETFIRST_NAME='Sam'WHEREID=3'"""
cursor.execute(sql4)
print("UPDATEtableSuccessfully.")
#刪除
sql5="""DELETEFROMEMPLOYEEWHEREFIRST_NAME='Mac'"""
cursor.execute(sql5)
print("DELETEtableSuccessfully.")第四章1.利用業(yè)務(wù)網(wǎng)站提供的API實現(xiàn)數(shù)據(jù)采集,清洗和存儲。importrequests
importpymysql
api_url='/search/repositories?q=spider'
req=requests.get(api_url)
print('狀態(tài)碼:',req.status_code)
req_dic=req.json()
print('與spider有關(guān)的庫總數(shù):',req_dic['total_count'])
print('本次請求是否完整:',req_dic['incomplete_results'])
req_dic_items=req_dic['items']
print('當(dāng)前頁面返回的項目數(shù)量:',len(req_dic_items))
names=[]
forkeyinreq_dic_items:
names.append(key['name'])
sorted_names=sorted(names)
db=pymysql.connect(host='localhost',user='root',password='這里要使用自己密碼',port=3306)
cursor=db.cursor()
cursor.execute("CREATEDATABASE數(shù)據(jù)庫名稱DEFAULTCHARACTERSETutf8mb4")
db.close()
db2=pymysql.connect("localhost","root","這里要使用自己密碼","數(shù)據(jù)庫名稱",3306)
cursor2=db2.cursor()
cursor2.execute("DROPTABLEIFEXISTS數(shù)據(jù)庫名稱")
sql1="""CREATETABLE`數(shù)據(jù)庫名稱`(
`id`int(10)NOTNULLAUTO_INCREMENT,
`full_name`char(20)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;"""
cursor2.execute(sql1)
print("CreatedtableSuccessfull.")
forindex,nameinenumerate(sorted_names):
print('項目索引號:',index,'項目名稱:',name)
sql2='INSERTINTO數(shù)據(jù)庫名稱(id,full_name)VALUES(%s,%s)'
try:
cursor2.execute(sql2,(index,name))
mit()
except:
db2.rollback()
db2.close()2.通過分析特定頁面結(jié)構(gòu)和數(shù)據(jù)的各項內(nèi)容,使用Python實現(xiàn)AJAX的數(shù)據(jù)采集,并將結(jié)果存儲到MySQL數(shù)據(jù)庫中。fromurllib.parseimporturlencode
importrequests
importpymysql
original_url='/ashx/AjaxIndexHotCarByDsj.ashx?'
requests_headers={
'Referer':'/beijing/',
'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/57.0.2987.133Safari/537.36',
'X-Requested-With':'XMLHttpRequest',
}
db=pymysql.connect(host='localhost',user='root',password='這里要使用自己密碼',port=3306)
cursor=db.cursor()
cursor.execute("CREATEDATABASEAJAXDEFAULTCHARACTERSETutf8mb4")
db.close()
db2=pymysql.connect("localhost","root","這里要使用自己密碼","AJAX",3306)
cursor2=db2.cursor()
cursor2.execute("DROPTABLEIFEXISTSajax")
sql1="""CREATETABLE`ajax`(
`car_name`char(20)NOTNULL,
`id`int(10)NOTNULLAUTO_INCREMENT,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;"""
cursor2.execute(sql1)
print("CreatedtableSuccessfull.")
defget_one(cityid):
p={
'cityid':cityid
}
complete_url=original_url+urlencode(p)
try:
response=requests.get(url=complete_url,params=requests_headers)
ifresponse.status_code==200:
returnresponse.json()
exceptrequests.ConnectionErrorase:
print('Error',e.args)
defparse_three(json):
ifjson:
foriinjson:
forbini.get('SeriesList'):
item_list=b.get('Name')
item_list2=b.get('Id')
print(item_list+':'+str(item_list2))
sql2='INSERTINTOajax(car_name,id)VALUES(%s,%s)'
try:
cursor2.execute(sql2,(item_list,item_list2))
mit()
except:
db2.rollback()
if__name__=='__main__':
city_list=[{'北京':'110100'},{'重慶':'500100'},{'上海':'310100'}]
forcityincity_list:
jo=get_one(city.values())
parse_three(jo)
db2.close()
#jo=get_one(110100)
#parse_one(jo)
#parse_two(jo)
#parse_three(jo)
#defparse_one(json):
#ifjson:
#foriinjson:
#item_list=i.get('Name')
#print(item_list)
#
#defparse_two(json):
#ifjson:
#foriinjson:
#forbini.get('SeriesList'):
#item_list=b.get('Name')
#print(item_list)第五章一、判斷題1、Selenium庫的主要作用是什么()A..進(jìn)行數(shù)據(jù)存儲B..自動化瀏覽器操作和網(wǎng)頁訪問C..?dāng)?shù)據(jù)可視化處理D..編寫網(wǎng)頁前端代碼二、判斷題2、WebDriverWait是Selenium中用于實現(xiàn)等待條件的方法之一,可以等待特定元素的出現(xiàn)。()3、使用Selenium進(jìn)行網(wǎng)頁自動化操作時,不需要關(guān)心頁面的加載時間和元素的出現(xiàn)順序。()答案:1、B2、對3、錯
三、實踐題請編寫Python代碼,使用Selenium訪問業(yè)務(wù)網(wǎng)站首頁,然后從搜索框中輸入關(guān)鍵字"Python編程",并模擬點擊搜索按鈕fromseleniumimportwebdriver#創(chuàng)建瀏覽器驅(qū)動browser=webdriver.Chrome()#打開百度首頁browser.get("")#定位搜索框并輸入關(guān)鍵字search_box=browser.find_element_by_id("kw")search_box.send_keys("Python編程")#定位搜索按鈕并點擊search_button=browser.find_element_by_id("su")search_button.click()第六章使用Scrapy創(chuàng)建項目,爬取網(wǎng)站的頁面數(shù)據(jù),并保存到MySQL數(shù)據(jù)庫中(網(wǎng)站可自行指定)。SpiderDemo.py爬蟲主代碼:importscrapy
#引入本地的模板
fromDemoAuto.itemsimportDemoautoItem
classMyScr(scrapy.Spider):
#設(shè)置全局唯一的name
name='DemoAuto'
#填寫爬取地址
start_urls=['/all/#pvareaid=3311229']
#編寫爬取方法
defparse(self,response):
#實例一個容器保存爬取的信息
item=DemoautoItem()
#這部分是爬取部分,使用xpath的方式選擇信息,具體方法根據(jù)網(wǎng)頁結(jié)構(gòu)而定
#先獲取每個課程的div
fordivinresponse.xpath('//*[@id="auto-channel-lazyload-article"]/ul/li/a'):
#獲取div中的課程標(biāo)題
item['title']=div.xpath('.//h3/text()').extract()[0].strip()
item['content']=div.xpath('.//p/text()').extract()[0].strip()
#返回信息
yielditemItems.py代碼importscrapy
classDemoautoItem(scrapy.Item):
#definethefieldsforyouritemherelike:
#name=scrapy.Field()
#儲存標(biāo)題
title=scrapy.Field()
content=scrapy.Field()
passMiddlewares.py的代碼#-*-coding:utf-8-*-
#Defineherethemodelsforyourspidermiddleware
#
#Seedocumentationin:
#/en/latest/topics/spider-middleware.html
fromscrapyimportsignals
classDemoautoSpiderMiddleware(object):
#Notallmethodsneedtobedefined.Ifamethodisnotdefined,
#scrapyactsasifthespidermiddlewaredoesnotmodifythe
#passedobjects.
@classmethod
deffrom_crawler(cls,crawler):
#ThismethodisusedbyScrapytocreateyourspiders.
s=cls()
crawler.signals.connect(s.spider_opened,signal=signals.spider_opened)
returns
defprocess_spider_input(self,response,spider):
#Calledforeachresponsethatgoesthroughthespider
#middlewareandintothespider.
#ShouldreturnNoneorraiseanexception.
returnNone
defprocess_spider_output(self,response,result,spider):
#CalledwiththeresultsreturnedfromtheSpider,after
#ithasprocessedtheresponse.
#MustreturnaniterableofRequest,dictorItemobjects.
foriinresult:
yieldi
defprocess_spider_exception(self,response,exception,spider):
#Calledwhenaspiderorprocess_spider_input()method
#(fromotherspidermiddleware)raisesanexception.
#ShouldreturneitherNoneoraniterableofResponse,dict
#orItemobjects.
pass
defprocess_start_requests(self,start_requests,spider):
#Calledwiththestartrequestsofthespider,andworks
#similarlytotheprocess_spider_output()method,except
#thatitdoesn’thavearesponseassociated.
#Mustreturnonlyrequests(notitems).
forrinstart_requests:
yieldr
defspider_opened(self,spider):
('Spideropened:%s'%)
classDemoautoDownloaderMiddleware(object):
#Notallmethodsneedtobedefined.Ifamethodisnotdefined,
#scrapyactsasifthedownloadermiddlewaredoesnotmodifythe
#passedobjects.
@classmethod
deffrom_crawler(cls,crawler):
#ThismethodisusedbyScrapytocreateyourspiders.
s=cls()
crawler.signals.connect(s.spider_opened,signal=signals.spider_opened)
returns
defprocess_request(self,request,spider):
#Calledforeachrequestthatgoesthroughthedownloader
#middleware.
#Musteither:
#-returnNone:continueprocessingthisrequest
#-orreturnaResponseobject
#-orreturnaRequestobject
#-orraiseIgnoreRequest:process_exception()methodsof
#installeddownloadermiddlewarewillbecalled
returnNone
defprocess_response(self,request,response,spider):
#Calledwiththeresponsereturnedfromthedownloader.
#Musteither;
#-returnaResponseobject
#-returnaRequestobject
#-orraiseIgnoreRequest
returnresponse
defprocess_exception(self,request,exception,spider):
#Calledwhenadownloadhandleroraprocess_request()
#(fromotherdownloadermiddleware)raisesanexception.
#Musteither:
#-returnNone:continueprocessingthisexception
#-returnaResponseobject:stopsprocess_exception()chain
#-returnaRequestobject:stopsprocess_exception()chain
pass
defspider_opened(self,spider):
('Spideropened:%s'%)Pipelines.py的代碼#-*-coding:utf-8-*-
#Defineyouritempipelineshere
#
#Don'tforgettoaddyourpipelinetotheITEM_PIPELINESsetting
#See:/en/latest/topics/item-pipeline.html
importjson
importpymysql
classDemoautoPipeline(object):
def__init__(self):
#打開文件
self.file=open('data.json','w',encoding='utf-8')
#該方法用于處理數(shù)據(jù)
defprocess_item(self,item,spider):
#讀取item中的數(shù)據(jù)
line=json.dumps(dict(item),ensure_ascii=False)+"\n"
#寫入文件
self.file.write(line)
#返回item
returnitem
#該方法在spider被開啟時被調(diào)用。
defopen_spider(self,spider):
pass
#該方法在spider被關(guān)閉時被調(diào)用。
defclose_spider(self,spider):
pass
defdbHandle():
conn=pymysql.connect("localhost","root","你的數(shù)據(jù)庫密碼","test")
returnconn
classMySQLPipeline(object):
defprocess_item(self,item,spider):
dbObject=dbHandle()
cursor=dbObject.cursor()
sql='insertintotable123(title,content)values(%s,%s)'
try:
cursor.execute(sql,(item['title'],item['content']))
dbOmit()
except:
dbObject.rollback()
returnitemSettings.py的代碼#-*-coding:utf-8-*-
#ScrapysettingsforDemoAutoproject
#
#Forsimplicity,thisfilecontainsonlysettingsconsideredimportantor
#commonlyused.Youcanfindmoresettingsconsultingthedocumentation:
#
#/en/latest/topics/settings.html
#/en/latest/topics/downloader-middleware.html
#/en/latest/topics/spider-middleware.html
BOT_NAME='DemoAuto'
SPIDER_MODULES=['DemoAuto.spiders']
NEWSPIDER_MODULE='DemoAuto.spiders'
ITEM_PIPELINES={
'DemoAuto.pipelines.DemoautoPipeline':300,#保存到文件中
'DemoAuto.pipelines.MySQLPipeline':300,#保存到mysql數(shù)據(jù)庫
}
MYSQL_HOST='localhost'
MYSQL_DATABASE='test'
MYSQL_USER='root'
MYSQL_PASSWORD='你自己的數(shù)據(jù)庫密碼'
MYSQL_PORT='3306'
#Crawlresponsiblybyidentifyingyourself(andyourwebsite)ontheuser-agent
#USER_AGENT='DemoAuto(+)'
#Obeyrobots.txtrules
ROBOTSTXT_OBEY=True
第七章1.編寫網(wǎng)絡(luò)爬蟲代碼采集業(yè)務(wù)網(wǎng)站二手房數(shù)據(jù),完成數(shù)據(jù)清洗后,存入數(shù)據(jù)庫。2.使用echarts和flask完成前后端可視化展示,圖形自擬。答案:參考正文第七章案例第一章一、判斷題1、以下選項不屬于程序設(shè)計語言類別的是()A..機(jī)器語言B..匯編語言C..高級語言D..解釋語言2、下列Python語句正確的是()A、min=xifx<yelseyB、max=x>y?x:yC、if(x>y)printxD、whileTrue:pass3、以下不能創(chuàng)建一個字典的語句是()A、dict1={}B、dict2={3:5}C、dict3={[1,2,3]:“uestc”}D、dict4={(1,2,3):“uestc”}二、判斷題4、模塊文件的擴(kuò)展名不一定是.py。()5、字符和列表均支持成員關(guān)系操作符(in)和長度計算函數(shù)(len())。()答案:1、D2、D3、C4、錯5、對第二章一、選擇題1、以下哪些是爬蟲技術(shù)可能存在風(fēng)險()A、大量占用爬去網(wǎng)站的資源B、網(wǎng)站敏感信息的獲取造成的不良后果C、違背網(wǎng)站爬去設(shè)置D、以上都是2、下面表示一個文本類型的是()A、<head>B、<html>C、<meta>D、<title>3、Tag有很多方法和屬性,下列哪個屬性不是Tag中最重要的屬性()A、nameB、attributesC、stringD、type二、判斷題4、縱向爬蟲主要面向大范圍精確信息的爬取。()5、URL包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它,所有互聯(lián)網(wǎng)上的每個文件都有一個唯一的URL。()答案:1、D2、B3、D4、錯5、對第三章一、選擇題1、下列四項中,不屬于數(shù)據(jù)庫系統(tǒng)特點的是(??)A、數(shù)據(jù)共享??B、數(shù)據(jù)完整性??C、數(shù)據(jù)冗余度高?D、數(shù)據(jù)獨(dú)立性高2、數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨(dú)立性體現(xiàn)在(??)A、不會因為數(shù)據(jù)的變化而影響到應(yīng)用程序?B、不會因為系統(tǒng)數(shù)據(jù)存儲結(jié)構(gòu)與數(shù)據(jù)邏輯結(jié)構(gòu)的變化而影響應(yīng)用程序?C、不會因為存儲策略的變化而影響存儲結(jié)構(gòu)?D、不會因為某些存儲結(jié)構(gòu)的變化而影響其他的存儲結(jié)構(gòu)3、.在數(shù)據(jù)結(jié)構(gòu)中,從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分成(??)A、動態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu)????B、緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)?C、線性結(jié)構(gòu)和非線性結(jié)構(gòu)????D、內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)?二、判斷題4、數(shù)據(jù)存儲反映的是系統(tǒng)中靜止的數(shù)據(jù),表現(xiàn)出靜態(tài)數(shù)據(jù)的特征。()5、.每種數(shù)據(jù)結(jié)構(gòu)都具備3個基本運(yùn)算:插入、刪除和查找。(?)答案:1、C2、B3、C4、對5、錯第四章一、選擇題1、對字符串的說法正確的是()A、字符串是基本數(shù)據(jù)類型B、字符串值存儲在棧內(nèi)存中C、字符串值初始化后可以被改變D、字符串值一旦初始化就不會被改變2、能切割字符串的方法是()A、indexOf()B、substring()C、split()D、trim()3、1.String類中的getBytes()方法的作用是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度餐飲業(yè)食品添加劑使用規(guī)范協(xié)議書模板3篇
- 二零二五年飯館員工勞動合同與員工福利配套協(xié)議3篇
- 二零二五年鈑金噴涂維修產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型承包協(xié)議2篇
- 2024版權(quán)質(zhì)押合同質(zhì)權(quán)實現(xiàn)及債務(wù)清償
- 2024年物業(yè)管理公司關(guān)于小區(qū)保潔服務(wù)合同
- 二零二五年度智慧城市建設(shè)項目宣傳推廣服務(wù)合同3篇
- 2024版電動伸縮門銷售協(xié)議3篇
- 2024年股權(quán)投資合同范本:投資金額與股權(quán)比例
- 2025年度新能源汽車充電樁建設(shè)合作協(xié)議范本3篇
- 二零二五年度環(huán)保設(shè)備模具定制合同范本3篇
- 政治畫像品德操守自我評價3篇
- 奶茶督導(dǎo)述職報告
- 山東萊陽核電項目一期工程水土保持方案
- 白熊效應(yīng)(修訂版)
- 小學(xué)數(shù)學(xué)知識結(jié)構(gòu)化教學(xué)
- 視頻監(jiān)控維保項目投標(biāo)方案(技術(shù)標(biāo))
- 社會組織能力建設(shè)培訓(xùn)
- 立項報告蓋章要求
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
- 主變壓器試驗報告模板
評論
0/150
提交評論