python爬取数据并存到excel,python爬取数据的意义

大家好,小编来为大家解答以下问题,python爬取数据保存到数据库,python数据爬取的基本原理,现在让我们一起来看看吧!

效果图
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
工具: Python,Flask,JS,CSS,HTML,WordCloud

爬取数据并存入数据库

一.导入需要的包

from bs4 import BeautifulSoup  # 网页解析,获取数据
import re  # 正则表达式,进行文字匹配
import xlwt  # 进行excel操作
import urllib.request, urllib.parse  # 指定URL,获取网页数据
import sqlite3  # 进行SQLite数据库操作

二.爬取网页数据

url=”网址”
(根据网址的规律,可以选择特定的页面,也可以应用循环读取不同的页面)
#如果网址含有中文则,则中文需要经过两次编码转换
#格式为 from urllib import parse   keyword= parse.quote(parse.quote("中文"))
#对请求的内容进行填充 (如果网址有反爬功能则需要填充,以模拟真实的浏览器)
head={“User-Agent”:… ; ….} 
req = urllib.request.Request(url, headers=head) 
html=””
#默认为发送get请求,如果要输入账户或cookie等则需要发送post请求,通过data = bytes(urllib.parse.urlencode({"xxx": "xxx"}), encoding="utf-8")传入数据即可
#获取网页源代码到response中(限定反应时间为3s),读取源代码到变量html,然后解析提提取数据
response=urlib.request.urlopen(req, [timeout=3],[ data=data]) 
html=response.read().decode(‘utf-8’) #这里根据网页的编码格式决定,F12即可查看soup=BeautifulSoup(html,”html.parser”)
data=[]
#提取信息方式一:F12定位得到你所需要的元素,逐层提取,如div.el  p.p1  span  a  
link=soup.select(“.el>p1>span>a”)  
data.append(link[“href”])   #link[“属性”]  link.text可以获取标签
#可以用strip()去除左右空白,用replace替换字符,用split划分字符串,用[切片]选择区域,[0:2]选择前两个字符,[0:-2]表示去掉最后两个字符
data.append({“link”:link[“href”]})
#提取信息方式二:
#1.得到网页中的div标签,class属性值为item的全部信息
#2.将得到的信息进一步筛选,需要先将item信息转化为字符串,通过定义的规则进行匹配,并保存起来,通过筛选之后可能也不止一个选项,但都会放到一个列表中,因此可以根据自身要求再度筛选
for item in soup.find_all(‘div’,class_=’item’):
item=(str)item
findLink=re.compile(r’<a href=”(.*?)”>) #正则表达式
link=re.findall(findLink,item) #while len(link)>1  link.remove()
link[0]=re.sub(‘<br(\s+)?/>(\s+)?’,””,link[0]) #根据规则去除空白匹配,strip()函数可以去掉左右两边的空白
data.append(link[0])

三.保存数据

保存到excel->创建工作书,在工作书中添加表格,编辑表格内容,将工作书保存到路径中
book=xlwt.Workbook(encoding=”utf-8”)
sheet=book.add_sheet(‘Sheet’[,cell_overwrit_ok=True]) #允许同一个格子进行重写
sheet.write(0,0,data[0])
book.save(“我的文档.xls”)
#保存到SQLite->获取链接,获取游标,用游标执行sql语句,提交链接,关闭连接
con=sqlite3.connect(“MyWord.db”)
cur=con.cursor()
sql=’’’
create table table1
(id integer primary key autoincrement,
word text)
‘’’
cur.execute(sql)
con.commit()
sql=”insert into table1(word) values(“%s”)”%data[0]
cur.execute(sql)
con.commit()
con.close()

数据可视化Flask

from flask import Flask, render_template

app=Flask(__name__)
@app.route(‘/index/<String : str>’)  
def index(str):  
#可以写入sqlite语句,然后将得到的数据传入html中
#传入html的数据有可能因为转移字符出现问题
#如双引号”会变成&#39,因此在html页面中使用{{s|tojson}}
return render_template(“index.html”,s=str) 
if __name__==’__main__’:
app.run()

html代码问题及解答

问题一:图片加载出错
解决:路径出错,使用../在全路径下寻找
问题二:图片受css影响导致简单地修改图片尺寸无法奏效
解决:在头部添加<style> .样式名字{height:650px !important}</style>
问题三:跳转连接时无法回到根目录
解决:使用/team会直接返回/team页面,使用team返回的是在所在页面后面加/team

Echarts的使用

#头部引入echars.js文件 
< src="../static/js/echarts.min.js"></>
#在需要防止图标的位置为echars准备一个具备大小的DOM
<div id="main" style="width: 1200px;height: 600px;">
</div> < type="text/java">
    #基于准备好的dom,初始话echarts实例
    var myChart=echarts.init(document.getElementById('main'));
    #此处插入在官网中找到的实例代码
    #使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
    </>

WordCloud的使用

import jieba
import wordcloud as wordcloud
from matplotlib import pyplot as plt
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import sqlite3
#创建数据库连接并把数据保存到字符串变量中  代码略
#结巴分词得到很多词的列表->将列表的词都连接起来,此时词与词直接有空格->
#打开遮罩图片->将图片转化为数组->指定词云格式->指定字符串->绘制图片->生成图片
cut = jieba.cut(text)
string=’  ’.join(cut)
img = Image.open(r'.\static\img\p6.jpg')
img_array = np.array(img)
wc = WordCloud(
    background_color='white',
    mask=img_array,
    # C:Windows/Fonts 选择字体
    font_path="STZHONGS.TTF"
)
wc.generate_from_text(string)
fig = plt.figure(1)  # 从第一个位置开始绘图
plt.imshow(wc)  # 按照wc的规则绘图
plt.axis('off')  # 显示坐标轴
plt.savefig(r'.\static\img\p8.png', dip=800)  # 保存图片到文件 dpi指清晰度

声明:学习资源来自Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析_哔哩哔哩_bilibili

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python编写程序来爬取网页数据,然后将数据写入Excel文件中。具体步骤包括:1.使用requests库发起HTTP请求获取网页源代码;2.使用BeautifulSoup库解析网页内容;3.将解析后的数据存储到Excel文件中,可以使用pandas库或者openpyxl库进行操作。需要注意的是,在爬取网页数据的过程中,必须遵守相关的法律法规和网站的使用规定,不得进行非法操作和侵犯他人隐私的行为。 ### 回答2: Python作为一种高级编程语言,具有强大的爬虫和数据处理能力。与此同时,Excel又是一款常见的办公软件,被广泛应用于数据分析和操作中。因此,通过Python爬取网页数据Excel,就变得非常必要和有用了。 爬取网页数据,一般都是使用requests和beautifulsoup4两个库来实现。其中requests用于获取网页的源代码,beautifulsoup4则用于解析网页的DOM结构,提取出我们需要的部分数据。此外,还需要借助一些其他的库,如pandas来进行数据的可视化、操作和处理。 整个流程可以分为以下几个步骤: 1.使用requests库获取目标网页的源代码,也可以结合selenium等工具模拟浏览器来获取动态页面的数据; 2.使用beautifulsoup4库对网页进行解析,提取出我们需要的数据,比如文章标题、发布日期、作者等等; 3.使用pandas库进行数据的可视化和处理,将数据整理成DataFrame格式,然后输出到Excel文件中; 4.本地读取Excel文件并进行数据的分析、操作和展示。 在进行爬虫开发期间,还需要注意到一些问题,比如在访问网站的时候需要进行User-Agent、Cookie和代理的设置,同时还要具备良好的爬虫道德,避免对目标网站造成不必要的影响。 总之,通过Python爬取网页数据Excel,可以极大地方便我们对数据的分析和操作,提升工作效率和准确度。同时,这也是一个非常有用的技能,在数据分析和数据挖掘等领域有广泛的应用。 ### 回答3: Python是一种强大的编程语言,可用于从网络爬取数据,将其处理并保存到多种数据格式中,包括Excel。这种功能是非常有用的,特别是当我们希望收集大量信息并进行分析时。下面是一些在Python爬取网页数据并将其保存到Excel中的步骤: 1. 导入必要的库:Python有许多库可用于爬取和处理网页数据,其中一些最常用的是BeautifulSoup、requests和pandas。在使用这些库前需要先安装它们(pip install)。 2. 获取网页:使用requests库中的get方法可以轻松获取网页内容。 3. 解析网页:BeautifulSoup库是Python中最常用的解析HTML网页的库,它可以轻松地找到HTML页面的特定元素。 4. 处理数据:使用pandas库中的DataFrame对象可以轻松地处理表格数据并将其存储到Excel中。 5. 将数据保存到Excel:使用pandas库中的to_excel方法可以将处理后的数据保存到Excel。 下面是一个示例代码,用于从某个网站中获取数量、日期和价格的数据,并将其存储到Excel中: ``` import requests from bs4 import BeautifulSoup import pandas as pd url = 'https://www.example.com/data' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') table = soup.find('table',{'class':'data-table'}) rows = table.find_all('tr') data = [] for row in rows: cols = row.find_all('td') cols = [col.text.strip() for col in cols] data.append([col for col in cols if col]) df = pd.DataFrame(data, columns=['Quantity', 'Date', 'Price']) df.to_excel('data.xlsx', index=False) ``` 在上面的代码中,我们首先使用requests库获取特定网页的内容,并使用BeautifulSoup库找到网页中的表格数据。接下来,我们使用pandas库中的DataFrame对象处理数据,并使用to_excel方法将其保存到Excel文件中。此示例代码非常简单和易于理解,但是,在实际的爬虫项目中,您可能需要有更高级的技能和更复杂的代码来处理不同的情况,例如数据更新、数据清洗和数据预处理等。需要注意的是,爬取网页数据存在合法性和道德性问题,应遵守相关法律法规,不得擅自收集、使用和公开他人的相关信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值