Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PyCharm 网络爬虫学习。包含爬虫代码框架的学习,简单容易上手,从基础到进阶,逐步学习网络爬虫。

Notifications You must be signed in to change notification settings

li199773/Web-Crawler

Repository files navigation

Web-Crawler

网络爬虫基础到进阶学习

目录

1.Bs4解析

01.介绍 BeautifulSoup(现已内嵌到bs4库下面)的用法,实例爬取的是北京新发地的蔬菜价格,并且进行可持久化存储(csv文件),网页蔬菜的价格主要以表格的形式表现,首先获取表格的源代码,先找到每行,在遍历每一列即可。

02.爬取优美图库的相关联的照片,进行可视化存储。

2.Xpath解析

采用 lxml 库下面的 etree 进行提取猪八戒网站,提取相关的价格,目标标题,名字。

3.综合训练

目标分析:综合练习爬取网易云音乐的评论。

相关介绍:

1.网易云音乐的评论在源代码里面看不到,因为是 json 阿贾克斯请求,必须导入 json 包进行提取。

2.通过 Chrome 浏览器开发者工具的分析,发现评论信息以被加密,必须进行解密。

需要导入 AES 进行解析。

from Crypto.Cipher import AES

3.最后提取相关评论,进行可视化存储。

目标网址:https://music.163.com (任意网易云音乐的评论即可)

4.多线程

01.在单线程的状态下,爬取相关的网站数据缓慢,在本节项目下使用多线程 ThreadPoolExecutor 模块进行高效率爬取北京新发地的菜价(对照BS4 01项目),首先对蔬菜价格进行提取,然后创建线程池,将任务传送给线程池,最后将数据写入 csv 文件,进行可视化存储。

目标网址:http://www.xinfadi.com.cn/marketanalysis/0/list/1.shtml (页码1换成 i 进行遍历,可以获取多个网页)。

02.协程练习:协程是当任务阻塞的情况下,会自动的切换成未阻塞的任务上。在宏观上是多任务一起在执行,在微观上是看是一个任务一个任务在切换。

03.协程:asyncio 操作, asyncio.run 一次开启多个任务,任务的执行效率很高。

04.异步操作 模块:aiohttp。项目目标:采用异步操作进行爬取多张图片。

思路分析: 1 发送请求 2 得到图片的内容 3 保存到文件。

目标网址:http://kr.shanghai-jiuxin.com/file/2020/1031/small774218be86d832f359637ab120eba52d.jpg 等三张图片,采用异步操作来下载图片。

05.异步协程实战:爬取百度小说-西游记,这里使用同步请求与异步请求相结合的方式,

相关介绍:

1 请求小说的章节和标题只需要请求一次即可,得到所有标签的 cid 采用同步请求即可 requests 模块。

2 获取文章的具体内容,采用异步的操作。

06.异步爬取视频实战,为91网站搜索的相关视频。

项目的相关流程为:

1.拿到网页的源代码。

2.从网页的源代码提取到 M3U8 的url。

3.下载网页的 M3U8

4.读取M3U8文件,下载视频。

5.合并视频(使用各种手段即可,不仅仅是编程手段:主要是使用软件将片段视频合并成一个整体的视频)。

5.Selenium 浏览器模拟

01.selenium 引入介绍:

浏览器的驱动:网址:https://npm.taobao.org/mirrors/chromedriver 默认情况下是谷歌浏览器(根据自己浏览器的版本进行下载,如果没有可以下载上一个版本,把解压好的文件复制到python 文件夹下即可。

02.Selenium 的各种操作

目标流程:

1.找到某个元素点击它,这里选用的是xpath。(这里找到的是进去页面看见全国)

2.找到搜索框,并在搜索框里面搜索python (有2种方法 直接回车/找到搜索按钮就可以)

time.sleep(2) 让浏览器缓一会 可能报错,假如为阿贾克斯请求的话,页面是局部刷新的,让浏览器等一会。

3.数据的爬取,最后进行数据的可视化存储。

目标网址:http://www.lagou.com

03.窗口之间的切换

相关流程:

1.使用 Selenium 模块进行浏览器的模拟登录相关的网页。

2.进入网页进行相关信息的提取。(同样子,希望网页不会瞬间的跳转,需要对程序进行睡眠的操作 time.sleep(2))

3.在 Selenium 眼中默认的网址还是原来那个,并不会切换到现在打开的新的网页的地址,所以要进行窗口的切换。

目标网址:http://www.lagou.com

04.无头浏览器

无头浏览器相关介绍:让浏览器在后台自己默默的运行即可,最后只是返回数据,不让浏览器进行运作。

注意:配置文件是万年不变的代码,不用刻意去记录相关的代码,直接使用即可。(已在代码中进行注释)

05.超级鹰登录

相关介绍:目前来说验证码的处理:

1.图像识别(机器来说不太好识别,有些识别不太适用)

2.选择互联网上面成熟的验证码破解工具。

注意事项:需要填写自己相关信息即可。代码已经成为体系,稍微改动即可。最后在官网进行选择合适的验证码类型即可。

 chaojiying = Chaojiying_Client('注册的用户名', '用户密码', '注册码') 

06.用超级鹰干超级鹰

相关介绍:使用超级鹰解决超级鹰的验证码问题。

1.使用 Selenium 模块里面的 webdriver 功能对其进行模拟浏览器自动的登录。

2.使用 Xpath 进行定位用户名,密码,和验证码,然后向网页源代码中填入相关的信息。(最好使其程序睡眠一段时间)

3.最后寻找到登录按钮,进行点击即可。

07.处理12306登录

相关介绍:使用超级鹰的模块解决12306网站的自动登录和验证码相关的问题。

1.导入超级鹰模块,在使用 Selenium 模块模拟浏览器打开 12306 的网站。

2.使用 Xpath 定位到用户名和密码一栏。

3.定位到验证码一栏,保存验证码图片,传送给超级鹰进行处理,最后传送信息给验证码一栏。

4.使用 drag_and_drop_by_offset 解决进度条问题。

5.任务提交,开启自动登录。

6.WebSpider 基础知识讲解:

本章节为 WebSpider 基础知识讲解和复习,并且对现有知识进行相应的扩充。具体查看文件夹下的 readme.md 文件

7.阿贾克斯介绍:

本章节为 ajax_get,ajax_post 请求的详细讲解,最后进行一个实战的训练。具体查看文件夹下的 readme.md 文件

8.ERROR和代理:

本章节主要讲解 error 和 模拟浏览器登录时的 headler 相关的一些列操作。具体查看文件夹下的 readme.md 文件

About

PyCharm 网络爬虫学习。包含爬虫代码框架的学习,简单容易上手,从基础到进阶,逐步学习网络爬虫。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /