pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫
Hello,大家好!停更了這么久,中間發(fā)生了很多事情,我的心情也發(fā)生了很大的變化,看著每天在增長(zhǎng)的粉絲,實(shí)在不想就這么放棄了,所以以后我會(huì)盡量保持在一周一篇的進(jìn)度,與大家分享我的學(xué)習(xí)點(diǎn)滴,希望大家可以繼續(xù)支持我,我會(huì)努力滴!
selenium是一個(gè)前端的自動(dòng)化測(cè)試工具,一般不推薦作為爬蟲(chóng)工具,但是為啥我還要給大家說(shuō)用來(lái)做爬蟲(chóng)呢,因?yàn)樗_實(shí)可以用來(lái)爬蟲(chóng),并且思路很直觀,原理比較清晰。
1. 安裝
selenium安裝比較簡(jiǎn)單,直接用pip就可以安裝,打開(kāi)cmd,輸入
pip install selenium
就好了
2.? 安裝chromedriver
chromedriver是谷歌瀏覽器的驅(qū)動(dòng)程序,因?yàn)槲移綍r(shí)用chrome,所以這里只介紹chromedriver。
下載地址:
http://chromedriver.storage.googleapis.com/index.html
這里需要注意的是,chromedriver的版本需要是你安裝的Chrome的版本對(duì)應(yīng)起來(lái),Chrome的版本可以在瀏覽器的右上角找到幫助-關(guān)于Google Chrome 查看瀏覽器的版本。具體的對(duì)應(yīng)規(guī)則如下:
chromedriver版本
支持的Chrome版本
v2.40
v66-68
v2.39
v66-68
v2.38
v65-67
v2.37
v64-66
v2.36
v63-65
v2.35
v62-64
v2.34
v61-63
v2.33
v60-62
v2.32
v59-61
v2.31
v58-60
v2.30
v58-60
v2.29
v56-58
v2.28
v55-57
v2.27
v54-56
v2.26
v53-55
v2.25
v53-55
v2.24
v52-54
v2.23
v51-53
v2.22
v49-52
安裝完之后,把驅(qū)動(dòng)的安裝目錄添加到系統(tǒng)Path中就好了,如果不添加,在運(yùn)行程序的時(shí)候就會(huì)報(bào)錯(cuò),提示你沒(méi)有添加到Path中。
3. 開(kāi)始爬蟲(chóng)
今天要爬取的網(wǎng)址是:https://www.upbit.com/service_center/notice,然后點(diǎn)擊翻頁(yè)按鈕,發(fā)現(xiàn)url并沒(méi)有變化,通過(guò)F12查看請(qǐng)求的地址變化,可以發(fā)現(xiàn),
https://www.upbit.com/service_center/notice?id=1
這里主要變化的就是后面的id,1,2,3,。。。依次類推。
用selenium爬蟲(chóng)開(kāi)始前,需要定義好下面內(nèi)容
# 設(shè)置谷歌瀏覽器的選項(xiàng),opt = webdriver.ChromeOptions()
# 將瀏覽器設(shè)置為無(wú)頭瀏覽器,即先爬蟲(chóng)時(shí),沒(méi)有顯示的瀏覽器opt.set_headless()
# 瀏覽器設(shè)置為谷歌瀏覽器,并設(shè)置為上面設(shè)置的選項(xiàng)browser = webdriver.Chrome(options=opt)
save = []
home = 'https://www.upbit.com/home'# 創(chuàng)建好瀏覽器對(duì)象后,通過(guò)get()方法可以向?yàn)g覽器發(fā)送網(wǎng)址,
# 獲取網(wǎng)址信息browser.get(home)
time.sleep(15)
然后是如何定位html的元素,在selenium中,定位元素的方法有
find_element_by_id(self, id_)find_element_by_name(self, name)find_element_by_class_name(self, name)find_element_by_tag_name(self, name)find_element_by_link_text(self, link_text)find_element_by_partial_link_text(self, link_text)find_element_by_xpath(self, xpath)find_element_by_css_selector(self, css_selector)
其中的id,name等都可以通過(guò)瀏覽器獲得,定位元素的目的是為了獲取我們想要的信息,然后解析出來(lái)保存,通過(guò)調(diào)用tex方法可以獲得元素的文本信息。
下面把整個(gè)爬蟲(chóng)的代碼,貼出來(lái),供大家參考
fromselenium importwebdriver
importtime
fromtqdm importtrange
fromcollections importOrderedDict
importpandas aspd
defstringpro(inputs):
inputs = str(inputs)
returninputs.strip().replace("\n","").replace("\t","").lstrip().rstrip()
opt = webdriver.ChromeOptions()
opt.set_headless()
browser = webdriver.Chrome(options=opt)
save = []
home = 'https://www.upbit.com/home'browser.get(home)
time.sleep(15)
forpage intrange(500):
try:
rows = OrderedDict()
url = "https://www.upbit.com/"\
"service_center/notice?id={}".format(page)
browser.get(url)
content = browser.find_element_by_class_name(
name='txtB').text
title_class = browser.find_element_by_class_name(
name='titB')
title = title_class.find_element_by_tag_name(
'strong').text
times_str = title_class.find_element_by_tag_name(
'span').text
times = times_str.split('|')[0].split(" ")[1:]
num = times_str.split("|")[1].split(" ")[1]
rows['title'] = title
rows['times'] = " ".join(times)
rows['num'] = num
rows['content'] = stringpro(content)
save.append(rows)
print("{},{}".format(page,rows))
exceptExceptionase:
continuedf = pd.DataFrame(save)
df.to_csv("./datasets/www_upbit_com.csv",index=None)
有問(wèn)題可以與我交流~
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言程序做成可执行文件,windows
- 下一篇: css样式子绝父相,子绝父相_HTML+