爬虫,爬取景点信息采用pandas整理数据

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

 小有瑕疵,初学见谅!!!