1、首先須要導入咱們的庫函數app
導語:經過看網上直播學習獲得,若有雷同純屬巧合。函數
import requests#請求網頁連接
import pandas as pd#創建數據模型
from bs4 import BeautifulSoup
import io
import sys#防止亂碼
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')學習
注:若有庫安裝不了,可參考上一篇隨筆。url
2、源代碼:spa
1 import requests 2 import pandas as pd 3 from bs4 import BeautifulSoup 4 import io 5 import sys#防止亂碼 6 sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') 7 def get_url(n): 8 #獲取網頁連接 9 urls=[] 10 for i in range(1,n+1): 11 urls.append('https://travel.qunar.com/p-cs299878-shanghai-jingdian-1-%s' %i)#獲取n段網頁連接 12 return urls 13 14 pass 15 16 def get_data(url):#獲取一段網頁連接的數據 17 r=requests.get(url) 18 soup=BeautifulSoup(r.text,'lxml')#lxml一種不錯的編譯器 19 ul=soup.find('ul',class_='list_item clrfix')#在網頁中經過查找元素信息找到其名稱 20 lis=ul.find_all('li')#查找全部信息 21 datalst=[]#定義一個數據字典 22 for li in lis: 23 dic={}#將須要查找的信息寫入數據字典 24 dic['景點名稱']=li.find('span',class_='cn_tit').text 25 dic['星級']=li.find('span',class_='cur_star')['style'].split(':')[1].replace('%','')#將數據中的百分號去掉實現初步數據清洗 26 dic['經度']=li['data-lng'] 27 dic['緯度']=li['data-lat'] 28 datalst.append(dic) 29 return datalst 30 31 32 def get_alldata(n):#按要求查找多段網頁連接的數據 33 alldata=[] 34 for url in get_url(n): 35 alldata.extend(get_data(url)) 36 return alldata 37 #print(get_alldata(2)) 38 df=pd.DataFrame(get_alldata(2))#創建pandas模型,按要求輸出 39 print(df)
3、運行結果:code
4、存儲:xml
這裏採用csv存儲,在獲取信息時寫入如下代碼把取得的信息寫入表格中。blog
1 def get_alldata(n): 2 alldata=[] 3 for url in get_url(n): 4 alldata.extend(get_data(url)) 5 alldata=[str(x) for x in alldata] 6 with open('describe.csv','a',encoding='utf8')as f:#在本身的運行目錄下新建一個csv後綴名的文件夾而後打開以讀寫的方式 7 f.write(','.join('%s' %id for id in alldata))#爲了防止數字轉字符串出錯首先逐個遍歷咱們的列表而後再寫入 8 f.close()#操做完成應記住關閉文件夾。 9 return alldata
運行結果:字符串
如上圖所示數據已成功寫入csv文件夾中。get
小有瑕疵,初學見諒!!!