上次我們講了,如何爬取圖片,大家可以點(diǎn)擊鏈接查看。
"python爬蟲:用request最簡(jiǎn)單的代碼爬取圖片,以及XpathHelper的使用"
今天我要分享的是用seleumns 提取蛋殼的租房信息。(文末附有代碼)
同樣這里分了四個(gè)步驟
1、提取網(wǎng)頁信息
2、找到需要提取的內(nèi)容
3、轉(zhuǎn)化為從list轉(zhuǎn)化成dataframe格式保持
4、翻頁循環(huán)提取
首先,我們了解一下selenium是怎么操作的?(機(jī)器控制瀏覽器使用)
我么來看一下,它是怎樣自動(dòng)百度的~~
from selenium import webdriver
url="https://www.baidu.com"
driver=webdriver.Chrome()#打開瀏覽器
driver.get(url)
這樣就可以得到

百度.png
接下來我們要輸入文字,然后點(diǎn)擊它搜索。

微信圖片編輯_20190627101517.jpg
這就是我們要找到的信息,然后我們用這個(gè)代碼輸入:
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("劉亦菲")#輸入

操作指南.png
然后用同樣的方法找到"百度一下”:
driver.find_element_by_xpath('//*[@id="su"]').click()
運(yùn)行結(jié)果:

微信截圖_20190627102656.png
介紹完selenium的使用,我們正式提取蛋殼公寓的租房信息。
#需要用到的包
from selenium import webdriver
import time
from lxml import etree
import pandas as pd
from pandas import DataFrame
import csv
# out=open("E:/安居客3.csv","w",newline="",encoding="utf-8-sig")
# csv_write=csv.writer(out,dialect="excel")
#先按一個(gè)盒子,放置所有LIST信息
d=[]
#將list轉(zhuǎn)化為dataframe,然后進(jìn)行保存
def ff(d):
data_1 = pd.DataFrame(d)
data_1.to_csv('E:/data7.csv')
url="https://www.danke.com/room/sz?search=1&search_text=%E7%BF%BB%E8%BA%AB&from=home&page="
driver=webdriver.Chrome()
#i參數(shù)是用來循環(huán)翻頁的
def start(i):
url_1=url+str(i)
driver.get(url_1)
time.sleep(2)
html=driver.find_element_by_xpath('//*').get_attribute('outerHTML')#獲取包含選中元素的HTML
html=etree.HTML(html)#轉(zhuǎn)化為Xpath格式
name1=html.xpath("http://div[@class='r_lbx_cen']/div[@class='r_lbx_cena']/a/text()")
price1=html.xpath("http://div[@class='r_lbx_money']/div[@class='r_lbx_moneya']/span[@class='ty_b']/text()")
# print(name1)
#如果是一個(gè)文件,不需要再in 后面添加zip
for name2,price2 in zip(name1,price1):
a=price2.strip()#strip()的作用是去除左右空格
b=name2.strip()
c=[b,a]#組成一個(gè)一維列表
d.append(c)#將數(shù)據(jù)添加到盒子D之中,形成二維列表
print(d)
ff(d)
#循環(huán)翻頁
for i in range(1,5,1):
start(i)
#結(jié)束后可以選擇關(guān)閉瀏覽器
driver.close()
我在代碼中添加了解釋,大家可以仔細(xì)觀察,然后自己上手練習(xí)一遍。
這里解釋一下難點(diǎn):
1、模擬瀏覽器打開操作,找到頁面。
2、需要提取頁面的全部代碼,我的操作是:
html=driver.find_element_by_xpath('//*').get_attribute('outerHTML')#獲取包含選中元素的HTML
html=etree.HTML(html)#轉(zhuǎn)化為Xpath格式
3、然后用xpath提取代碼,上篇文章有講過xpathHlper的使用,這里不多講~
4、保存方式
這里講到了兩種保存方式,一種是Dataframe的保存方式。
將提取的字符串,轉(zhuǎn)為1維list,到二維list,再到dataframe的格式。
#盒子放在最外面
d=[]
#在函數(shù)內(nèi),for循環(huán)解壓中,a和b元素組成多個(gè)1維列表c,然后多個(gè)c添加到盒子d中形成二維列表。
c=[b,a]#組成一個(gè)一維列表
d.append(c)#將數(shù)據(jù)添加到盒子D之中,形成二維列表
#列表轉(zhuǎn)化為dataframe,用to_csv保存
def ff(d):
data_1 = pd.DataFrame(d)
data_1.to_csv('E:/data7.csv')
ff(d)
第二種方式:直接多個(gè)列表保存到csv中,麻煩的多
c=[b,a]
csv_write.werterow(c) #在函數(shù)和for循環(huán)中運(yùn)行
out=open("E:/安居客3.csv","w",newline="",encoding="utf-8-sig")
csv_write=csv.writer(out,dialect="excel")
希望這篇文章對(duì)你有所幫助,有什么疑問歡迎留言哦~