Python爬虫之requests+验证码破解+scrapy框架基础

requests是Python自带的一个第三方库(针对解决爬虫问题)使得收集数据,更加简单。

一个类型和六个属性

我们知道使用urllib的三步法;

请求对象定制、模拟浏览器向服务器发送请求、获取响应数据

这里的response的类型是"HTTPResponse"

get请求(带有参数的情况):直接传入数据,不需要进行编码。

 post请求,表单数据也是不需要编码的,直接传入即可。

 想到百度翻译:其实我们可以写个程序来查询单词的意思ACTION!!!

 

 比较简单,利用循环+百度翻译服务器提供的数据 返回到本地进行查询。

验证码破解:

主要难点:
隐藏域;

验证码;
 

 可以看到这个网站的请求方式采用post请求、表单数据中 两个__的反爬手段是不断地变化

那么该怎么解决呢?

可以把这一页的网页源码拿到 通过xpath或者bs4解析拿到 对应的value 就成功了。

解决代码:

bs4解析手法:

 注意:select返回列表数据[0]  如果想获取该标签对应的数据 需要.attrs.get('属性名')

接下来就是处理验证码的问题了:
我们找到这个验证码的src(图片路径)将图片下载下来 定义变量输入传入 验证登录即可。

抓取登录接口:

但是这样做是不能拿到登录的页面的,坑点来了:
第一次请求获得图片验证码

第二次请求获取网页

两次的请求不一致 !,需要使用requests里的session 确立两次请求实同一个请求。

这样才能解决验证码问题:

session可以将两次请求一致!!!可以理解为加载同一个网页,相同的请求。

怎么请求一致的?  先使用session 保存图片  再将登录使用的requests换成session

这样就可以解决请求一致的问题了! session使得两次请求一致 共享的作用

session步骤

session=requests.session()     

response=session.get(图片路径)
content=response.content  拿到二进制文件进行下载到本地  注意写入方法是(wb)

访问登录页面:

session.post(...)

爬虫之scrapy框架

scrapy是什么?他是一个为了爬取网站数据,提取结构性数据(如:ul下有li)而编写的应用框架,可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。

安装scrapy的方法(有一定的难度,有仔细解读):

  1. pip install scrapy
  2. 如果1报错,可能是因为没有twisted这个库,scrapy依赖twisted这个库进行运作。解决方法:
    https://www.lfd.uci.edu/~gohlke/pathonlibs/#twisted  下载对应电脑的版本 (cp是python的版本)  (amd是你操作系统的版本) 下载安装好twisted后再次使用1的指令。
  3. 报错提示:更新pip指令     解决方案:终端输入:python -m pip install --upgrade pip
  4. 报错提示:win32              解决方案:pip install win32
  5. 直接下载anaconda   仔细想想自己做过什么坏事,无药可救!!!

anaconda使用步骤:
双击打开anaconda

点击environments 
点击 not istalled

输入scrapy,然后点击应用apply,并且切换环境,在python解释器卡槽选择anaconda环境。

Scrapy使用流程:

  1. 创建爬虫项目
  2. 创建爬虫文件
  3. 运行爬出文件

对应指令:

1、scrapy startproject 爬虫项目名字

2、cd 爬虫项目名字\爬虫项目名字\spiders(进入spiders文件 在其下面创建爬虫文件) 

创建爬虫文件指令:scrapy genspider 爬虫名字 需要爬取数据的网页

例如: scrapy genspider baidu www.baidi.com      注意:不需要写http协议 会自动生成!!!

3、在爬虫文件中写好了代码(解析好了) 终端使用命令获得需要爬取的数据 

运行爬虫文件:   scrapy crawl 爬虫文件名

认识一下爬虫核心文件:

spiders目录下对应创建的爬虫文件

约定俗成的君子协议  在setting.py文件里设置(robot.txt) 

 案例: 

 

 scrapy项目各个组成部分解读:
我放在github上了,大家可以看看

本地上传github服务器:

 本地传文件到github服务器 使用指令     git push  将本地文件发送到服务器存储。

注意:上传的时候能会连接错误,大多是因为当前网络不稳定造成 ,多提交几次就好了!!!

先做一个案例:爬取58tc二手房价的信息,并且保存到本地excel文件:

操作流程:

创建项目

创建爬虫文件

运行爬虫文件,收获数据

chrome浏览器访问58tc进入网站 爬取想要数据    例如:爬取重庆市渝中区二手房数据

将爬取的数据保存到本地   后期我们可以利用管道下载 连接数据库,写sql 保存数据到数据库。

scrapy运行流程:
创建爬虫项目

找到爬取的网站url,创建爬虫文件 写xpath解析

拿到网页源码数据,开始爬取需要的数据。

导入表格,爬虫完成。

注意:
运行爬虫文件:scrapy crawl 爬虫文件名

应该在spiders文件夹内执行

scrapy组成介绍

(1)引擎

自动运行、会自动组织所有的请求对象、分发给下载器

(2)下载器

从引擎处获取到请求对象后,请求数据

(3)spiders 这个类定义了如何爬取某个网站,包括爬取的动作、分析网页

(4)调度器

自动调度

(5)管道

最终处理数据的管道(下载数据)、会预留给我们处理数据

item pipeline组件应用:
清理html数据

验证爬取的数据

查重

将爬取的结果保存到数据库中

scrapy的工作原理:

过程:
 

  1.  引擎向spiders要url
  2. 引擎将爬取的url给调度器
  3. 调度器将url生成的请求对象放入指定的队列里
  4. 从队列中出队一个请求
  5. 引擎将请求交给下载器进行处理
  6. 下载器向互联网发送请求获取数据,这一步可能拿不到数据
  7. 下载器将数据(或者url)发送给引擎
  8. 引擎将数据给spiders(response)
  9. spiders通过xpath解析数据,得到数据or url(会继续获取数据)
  10. spiders将数据或者 url给引擎
  11. 引擎判断是数据还是url  if   数据:传给管道;else:url:重新执行上面操作。

简单流程:
spiders->引擎->调度器->引擎->下载器->互联网->下载器->引擎->spiders-{判断十数据还是url

数据就执行:spiders->引擎->管道

url就执行:重复执行。。。

scrapy shell介绍:

针对复杂爬虫业务,我们可以使用scrapy shell

感谢你的阅读,下篇爬虫文章将会陆续发布,我们下期再见。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python股票数据爬虫分析可视化框架有很多选择,下面我会介绍其中几个比较流行的框架。 1. BeautifulSoup:BeautifulSoup是一个强大的HTML/XML解析库,可以用来爬取网页上的股票数据。它提供了简单的API来遍历和搜索HTML/XML文档树,使得爬取股票数据变得相对简单。虽然BeautifulSoup本身并不提供数据分析和可视化的功能,但可以结合其他Python库,如Pandas和Matplotlib等进行进一步的数据分析和可视化。 2. ScrapyScrapy是一个功能强大的Python爬虫框架,它提供了丰富的特性和工具,使得构建复杂的爬虫变得简单。使用Scrapy可以方便地定义爬虫的规则和流程,通过XPath或CSS选择器等方式抓取股票数据。类似于BeautifulSoup,Scrapy本身并不提供数据分析和可视化功能,但可以结合其他库进行进一步的分析和可视化。 3. Pandas:Pandas是一个用于数据处理和分析的库,它提供了高效的数据结构和数据分析工具。可以使用Pandas读取和处理从网页爬取得到的股票数据,进行数据清洗、转换和分析。Pandas还集成了Matplotlib和Seaborn等可视化库,可以用来绘制各种类型的图表和可视化结果。 4. Matplotlib:Matplotlib是一个用于绘制2D图表和可视化数据的库。在股票数据分析中,可以使用Matplotlib来绘制股票走势图、K线图、柱状图等各种图表,直观地展示股票数据的变化情况。 总而言之,以上是几个常用的Python股票数据爬虫分析可视化框架。根据具体的需求和个人偏好,选择适合自己的框架进行开发和使用。这些框架在数据爬取、处理、分析和可视化方面都具有优势,可以帮助我们更好地理解和分析股票数据。 ### 回答2: Python股票数据爬虫、分析和可视化是金融领域中常见的应用之一。在这个过程中,我们使用Python编程语言以及相关的库和框架来从互联网上获取股票数据,对数据进行分析,并将结果可视化展示出来。 首先,我们需要使用Python中的爬虫工具来从网站上爬取股票数据。常用的爬虫库包括Requests和BeautifulSoup。使用这些库,我们可以向股票数据提供网站发送HTTP请求,并根据网站的HTML结构提取所需的数据。 然后,我们可以使用Python中的数据分析库如Pandas、NumPy和SciPy来对股票数据进行处理和分析。这些库提供了灵活强大的数据结构和函数,可以进行数据清洗、数据计算以及统计分析等操作。我们可以使用这些库来计算股票的收益率、波动性、相关性等指标,从而帮助我们更好地理解股票市场的情况。 最后,我们可以使用Python中的可视化库如Matplotlib和Seaborn来将分析结果呈现出来。这些库提供了各种绘图函数和样式,可以绘制折线图、柱状图、散点图等不同类型的图表。通过可视化,我们可以更直观地观察和分析股票数据的趋势和变化,帮助我们做出更明智的投资决策。 总而言之,Python股票数据爬虫、分析和可视化框架给予我们在金融领域中研究和应用股票数据的能力。通过这个框架,我们可以轻松地从互联网上获取股票数据,对数据进行分析,并通过可视化展示出来,从而更好地理解和利用股票市场的信息。 ### 回答3: 对于股票数据的爬虫、分析和可视化处理,Python提供了多个强大的框架。以下是其中几个常用的框架和库: 1. BeautifulSoup:用于从网页中提取数据的库。通过解析HTML文档,可以方便地提取股票数据。 2. Scrapy:一个高效的网络爬虫框架,适用于大规模的数据爬取。可以用于爬取多个股票网站的数据。 3. Pandas:一个流行的数据处理和分析库。可以使用Pandas加载股票数据并进行数据清洗、分析、转换和计算。 4. NumPy:一个用于科学计算的库。在股票数据分析中,NumPy提供了针对数组和矩阵运算的丰富功能。 5. Matplotlib:一个绘图库,用于生成各种类型的图形。可以使用Matplotlib创建股票历史价格趋势图、K线图等可视化结果。 6. Seaborn:基于Matplotlib的库,用于创建更美观的统计图表。Seaborn可以用于创建股票收益率分布图、相关性矩阵等。 7. Plotly:一个交互式的可视化库,可以创建基于Web的动态图表。通过Plotly,可以创建可交互的股票走势图和K线图等。 使用这些框架和库,可以通过Python实现全流程的股票数据爬取、分析和可视化处理。首先,使用爬虫框架(如BeautifulSoup或Scrapy爬取股票数据;然后,使用Pandas和NumPy进行数据处理和分析;最后,使用Matplotlib、Seaborn或Plotly将分析结果可视化呈现。这样,可以得到直观、清晰的图表,帮助用户更好地理解股票数据的变化和趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值