推广 热搜: page  数据  小红  红书  考试  论文  数据分析  关键词  哪些  搜索 

爬虫详细教程第2天

   日期:2024-12-25     移动:https://sicmodule.kub2b.com/mobile/quote/12861.html

各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料

解析网页的三种解析方式:

  • re解析
  • bs4解析
  • xpath解析

正则表达式, 一种使用表达式的方式对字符串进行匹配的语法规则.

正则的优点: 速度快, 效率高, 准确性高
正则的缺点: 新手上手难度有点儿高.

正则的语法: 使用元字符进行排列组合用来匹配字符串

在线测试正则表达式https://tool.oschina.net/regex/
链接: 在线测试正则表达式

爬虫详细教程第2天

元字符: 具有固定含义的特殊符号。

  • 常用元字符如下:
  • . 匹配除换行符以外的任意字符
  • w 匹配字母或数字或下划线
  • s 匹配任意的空白符
  • d 匹配数字
  • 匹配一个换行符
  • 匹配一个制表符
  • ^ 匹配字符串的开始
  • $ 匹配字符串的结尾
  • W 匹配非字母或数字或下划线
  • D 匹配非数字
  • S 匹配非空白符
  • a|b 匹配字符a或字符b
  • () 匹配括号内的表达式,也表示一个组
  • […] 匹配字符组中的字符
  • [^…]匹配除了字符组中字符的所有字符

量词: 控制前⾯的元字符出现的次数

  • 1.* 重复零次或更多次
  • 2.+ 重复一次或更多次
  • 3.? 重复零次或一次
  • 4.{n} 重复n次
  • 5.{n,} 重复n次或更多次
  • 6.{n,m} 重复n到m次

贪婪匹配和惰性匹配

  • .* 贪婪匹配
  • .*? 惰性匹配
  1. findall 查找所有. 返回list
 
  1. search 会进行匹配. 但是如果匹配到了第一个结果. 就会返回这
    个结果. 如果匹配不上search返回的则是None
 
  1. match 只能从字符串的开头进行匹配
 
  1. finditer, 和findall差不多. 只不过这时返回的是迭代器(重点)
 
  1. compile() 可以将一个正则进行预加载. 方便后面的使用
 
  1. 正则中的内容如何单独提取?单独获取到正则中的具体内容可以给分组起名字
 

这里可以看到我们可以通过使用分组. 来对正则匹配到的内容进
一步的进行筛选.

目标: 抓取"电影名称",“上映年份”,“评分”,"评分人数"四项内容.怎么做呢?

首先, 先看一下页面源代码. 数据是否是在源代码上的?很明显, 我们想要的数据全部都在页面源代码中体现了. 接下来第一步了. 拿到⻚面源代码,然后呢. 从⻚面源代码中提取我们需要的内容. 这时候我们就可以去写正则了.

 
 

开始匹配, 将最终完整的数据按照自己喜欢(需要)的方式写入文件.

 
 

bs4解析比较简单, 但是呢, 首先你需要了解一丢丢的html知识. 然后再去使用bs4去提取, 因为bs4就是通过html标签和属性去定位⻚面上的内容的。

 

<标签 属性=“值” 属性=“值”>
被标记的内容
</标签>

在python中我一般只推荐用pip进行安装. 原因: 简单!!!

 

bs4在使用的时候就需要参照一些html的基本语法来进行使用了. 我们直接上案例. 案例是最能直观的展现出bs4的便捷效果的.

我们来尝试抓取链接: link
http://www.xinfadi.com.cn/marketanalysis/0/list/1.shtml

老规矩, 先获取⻚面源代码. 并且确定数据就在⻚面源代码中~

 

将⻚面源代码丢给BeautifulSoup, 然后我们就可以通过bs对象去检索⻚面源代码中的html标签了

 

BeautifulSoup对象获取html中的内容主要通过两个方法来完成

 

基本上有这两个方法就够用了. 不论是find还是find_all 参数几乎是一致的.
语法:

  • find(标签, 属性=值)

意思是在页面中查找 xxx标签, 并且标签的xxx属性必须是xxx值
例:find(‘div’, age=18) 含义: 在⻚面中查找div标签, 并且属性age必须是 18的这个标签.

find_all()的用法和find()几乎一致.
find()查找 1 个. ,find_all()查找⻚面中所有的.

 

好了, 用法说完了. 接下来就回来看怎么抓取新发地的价格吧

 

接下来就可以进一步去提取数据了. 后面的直接给出完整代码.因为逻辑都是一样的. 并没有多么的复杂, 过程就省略了.

 

有人可能要问了. 为什么只有第一⻚数据. 你观察一下第二⻚, 第
三⻚的url就明白了了

 
 

我们以优美图库作为本节课的案例。
链接:优美图库https://www.umei.cc/bizhitupian/weimeibizhi/

我需要在网站的首⻚中, 找到子⻚面的链接, 然后请求到子⻚面, 才能看到图片>也就是说, 想要下载该网站图片(高清大图), 需要三步,
第一步, 在主⻚面中拿到每一个图片的子⻚面链接
第二步, 在子⻚面中找到真正的图片下载地址
第三步, 下载图片

1.拿到子⻚面链接

 

2.获取到子页面信息, 找到下载图片的图片路径

 
  1. 下载图片
本文地址:https://sicmodule.kub2b.com/quote/12861.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号