网页数据抓取怎么写(Python爬虫的网页数据获取方法(一)(图))

优采云 发布时间: 2022-04-19 14:25

  网页数据抓取怎么写(Python爬虫的网页数据获取方法(一)(图))

  从数据浏览本身来看,很多网页给出的信息已经很全面了。美中不足的是,并不是所有的网页都有多种数据比较功能,大多数网页只列出尽可能多的数据。,如果你想按时间纵向比较数据,或者按类型横向比较,或者更多样化的数据处理,你只能把数据采集起来放到自己的数据库中,以最大的自由度进行数据处理。

  如果要采集成百上千条数据,不可能一一复制粘贴,此时就需要爬虫。

  Python爬虫的解决方案有很多,也针对各种情况。这里我们介绍selenium,它比较通用。

  准备工具

  Selenium 库,浏览器驱动

  安装硒库

  运行(win+R) --> 输入cmd --> 输入pip install selenium --> 等待自动安装成功

  安装浏览器驱动

  首先找到你浏览器的具体版本:设置-->关于Chrome

  

  chrome浏览器设置界面

  下载对应版本的驱动,网址:

  

  浏览器驱动下载页面

  下载完成后,解压文件到你指定的任意位置,记住这个路径

  

  我个人新建了一个文件夹,放到D盘

  下面开始代码

  引入 selenium 库

  创建Python文件,输入两行代码,导入selenium库

  从硒导入网络驱动程序

  从 mon.by 导入

  

  不要问我为什么写这个,我也是抄的

  绑定驱动

  web_driver = webdriver.Chrome(驱动文件路径)

  

  路径应该用单引号或双引号括起来

  此时就可以使用代码调用浏览器打开网页了。以google为例,输入网址如下:

  代码:web_driver.get('')

  点击运行代码打开浏览器跳转到对应的URL

  

  这里的“”不能省略

  爬虫实现(主要)

  从流程来看,爬虫是这样的:获取网页数据-->分析网页数据-->过滤网页数据-->整理网页数据

  获取网页数据

  首先要做的是选择一个目标页面。很多人可能不需要网络爬虫,而只对这项技术感兴趣。只是模拟一个场景,比如在豆瓣上爬恐怖片。

  首先要做的是找到它的 URL。这个需要手动搜索得到网址:#!type=movie&tag=%E6%81%90%E6%80%96&sort=recommend&page_limit=20&page_start=0

  

  复制的网址没有中文,因为中文单词“恐怖”以某种形式编码。这个过程是自动的。

  待爬取的数据存储在网页后面的源码中,可以通过F12查看

  

  点击左上角元素显示网页的html源码

  定位内容和代码

  找到源代码后,下一步就是定位,也就是确定页面显示的内容在后台的代码中是怎么写的,可以通过图标获取:点击左上角的小箭头角落 --> 回到网页点击内容--> 代码会自动定位到这里

  

  依次操作

  识别代码特征

  可以看到第一部电影指向箭头所在行的代码,小箭头进一步展开,可以看出里面确实存储了电影的各种信息

  

  再往下看,可以看到后面几行代码的格式都是一样的,可以推断:每一行代表一部电影的信息。

  

  至此,思路清晰。你只需要拿到这段代码,把里面有用的信息提取出来,就可以完成爬虫了。

  接下来写代码

  打开网页

  方法和一开始打开google一样,输入web_driver.get('!type=movie&tag=%E6%81%90%E6%80%96&sort=recommend&page_limit=20&page_start=0')

  

  操作图标

  解析代码

  接下来输入这行代码

  element = web_driver.find_element(By.CLASS_NAME, 'list-wp')

  

  这行代码告诉计算机取一个元素,也就是F12查看源代码时被点击的元素

  括号中有两个参数。第一个被复制并忽略。第二个看到我写了'list-wp'。您也可以从左侧的英文说明中看到。这行代码通过类名获取对应的代码。,所以很明显这里的类名是list-wp,是我刚才查网页源代码的时候发现的。

  (HTML知识:HTML是一种“包装”的书写方式,比如使用

  和

  作为一对,里面的内容包裹在里面)

  

  为什么不选择 class = 'item' 因为 class = 'item' 只收录一部电影,而 class = 'list-wp' 收录所有电影

  添加另一行代码

  html = element.get_attribute('outerHTML')

  

  这行代码官方获得了网页的源代码,所以名字也是html。您可以使用打印功能进行打印和检查。您可以看到确实显示了与浏览器中完全相同的代码片段。

  

  至此,网页上的工作就结束了,接下来进入信息处理阶段,查看这段代码只有4行。(你可以理解为什么python做爬虫很方便,因为它确实有很多已经完善的功能库。对于外行来说,我们只需要合理使用即可。)

  信息提取

  整理一下,现在网页代码已经通过[html = element.get_attribute('outerHTML')]保存在[html]中,然后可以用正则表达式有针对性地提取信息,爬虫就完成了.

  简单来说,这次只提取name和score,用刚才介绍的html代码的知识来分析一下。可以看到名称和分数被包裹在一个

  --

  标签,其中

  --

  它被进一步放入 - 以存储分数。

  

  这里还有电影的名字,放在图片链接后面,用[alt = ]标记

  

  简单的正则表达式

  正则表达式用于信息处理领域,一般用于信息判断和筛选。在Python中使用正则表达式,需要在代码开头插入[import re]

  

  正则表达式简单操作

  流程如下:准备一份原创数据-->设置数据抽取规则-->使用规则抽取数据

  现在原创数据是html,取出第一部电影的名字和评分部分,写成这样的文字:

  “灵媒”6.4

  设置数据抽取规则:name --

  

  , score--(.*?) (后面我会解释为什么要写)

  数据提取,代码:re.find_all('rule', original data)

  适用于本案

  

  这是一个生动的例子,实际上并不是这样写的

  以上就是使用正则表达式提取数据,然后将提取的数据存储起来。

  数据存储

  创建两个数组,命名为 title 和 rank,分别存储标题和评分。

  

  命名不是强制性的

  插入数组操作的一点小知识

  

  通过这段代码,[array name [ ].append(content)],可以给数组添加内容

  使用正则表达式提取需要的数据并存储在内容中,即[title.append(re.find_all('rule', html'))]

  

  创建数组,使用正则表达式提取内容,放入数组

  至此,基本的代码已经写好了,剩下的就是数据的表示了,比如直接用print输出到电脑上。

  

  运行此代码

  你可以得到

  

  代码运行结果

  至此,整个爬虫的工作已经完成。

  补充

  以上是针对一些网站从0开始的爬虫解决方案。本人不是计算机或网络专业的,根据工作需要研究过,所以也从小白的角度写了教程。所以代码的写法可能不规范,不要问为什么不写重复调用的函数,因为小白第一次学的时候不需要知道这个。

  当然,在Python中实现爬虫还是有一些方法的,比如不使用selenium,使用urllib,后面有机会再讲。

  而且,爬虫只获取数据。真正的工作是获取到数据后如何处理,比如存入数据库,写入excel,数据可视化,甚至是网页监控。

  如果你想正式将此功能应用到学习或工作中,你需要的东西还是很多的。从我个人的学习和应用来看,我遇到过这些问题:

  如何批量抓取多个页面;

  每次要打开网页,怎么不打开网页进行爬取;

  给工作中的其他同事使用,需要自己写个图形界面,打包成exe分享;

  编写图形界面并完成打包后,如何隐藏后台命令行的提示;

  有些信息在后台的html代码中根本没有,怎么爬取;

  还有很多问题。. . 如果你只对爬虫知识感兴趣,就看上面。如果你真的想进一步应用它,请注意后续更新。

  简单的正则表达式会先更新,不会太快。. .

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线