栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

web crawler是什么意思_web crawler、consultation?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

web crawler是什么意思_web crawler、consultation?

requests请求

1. 新建python file尽量使用英文命名

 2. requests作用:发送请求,获取相应数据

 3. 发送get请求:response = requests.get(url)

4. 导入模块一般要与下一行命令有一行空格

5. print(response.encoding) 表示使用什么样的编码 print(response.encoding = ‘utf-8’)表示使用utf-8进行编码

6. print(response.text) 是一个解码

7. print(response.content) 是获取相应的二进制数据

b'rn

8. print(response.content.decode() )默认是使用utf-8进行解码【对二进制数据进行解码】

9. print(response.content.decode())是 print(response.encoding = ‘utf-8’)和print(response.text)的结合【使两行数据变成一行,简便】

10. print(response.content.decode(encoding='gbk'))则是进行gbk的解码

案例:

url:http://ncov.dxy.cn/ncovh5/view/pneumonia(丁香园疫情数据网页地址)

requests安装:我是通过pycharm的settings去添加库

再通过Python Interpreter点击加号去添加requests库

 

Beautiful Soup

Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库

 为什么输入的是soup = BeautifulSoup('data','lxml'),但是运行出来的是

data

,因为BeautifulSoup会自动对代码进行一个补全

 

 head,body是html的子标签,而html是head,body的父标签

title是head的子标签,head是title的父标签

html是title的祖先标签,title是html的后代标签

p标签有一个属性叫class,值是title

a标签有一个hrefclass,id的属性,其值就不一一描述了,Elsie是a标签的文本内容 

1. name指定a,则会把a标签给找出来,如果指定title,就会把title标签给找出来

2. atrs指定class:title就可以把p标签给找出来,如果指定id:link1,则就会把a标签给找出来

3. 若recursive=False,只会查找子标签(例:如果name=title,recursive=False,则会找不到,因为html里的子标签只有head和body),所以一般recursive的默认值都是True

4. text若指定Eisle,则会查找到Eisle的文本内容

5. find是查找到第一个元素对象,而find_all则是查找到所有的元素对象

例题:

查找title,a,所有a标签

 

 案例:从疫情首页提取各国最新的疫情数据

url:http://ncov.dxy.cn/ncovh5/view/pneumonia(丁香园疫情数据网页地址)

正则表达式常见语法:

正则表达式是一种字符串匹配模式,作用是从某个字符串中提取符合某种条件的子串。

 点只能匹配除换行符(n)以外的,不然都匹配不上

 ​​​​​​预定义字符:

 d只能匹配一个字符

 w只能匹配字母,数字,下划线,中文,其他就不行(特殊字符)

不象只匹配一个字符,可以在d后面加上d*,但会出现空字符串,原因是d*是允许匹配空的,入宫不想有空字符串,可以随便加一个字符,如ad*,这样就限制了只有一个字符串,但是内容里也必须含有a,不然匹配不上

 

 

/d*如果只有一个a,是可以匹配上的,因为可以出现0次或无限次的数字,但是如果是/d+只有一个a的话就不行,因为必须出现一次或者无限次数字 ,如果是a1的话就可以了

 

 

 /d?只能出现0次或者1次数字,若内容是a123时,只会出现第一个数字1,同理如果只有a也可以匹配,运行为[a]。

还可以用{}来规定要输出的字符大小。

 

  re.findall()方法

 

re.findall()查找字符串所有与正则匹配的子串,返回一个列表,若果没有找到返回空列表。

正常的点号和换行符是不匹配的,这个时候用上re.DOTALL或者是re.S,就可以匹配所有的字符

关于re.findall()分组的使用

 如果是不分组,则返回与整个正则匹配的列表。

rs = re.findall('a.+bc','anbc',re.DOTALL)#['anbc']

如果是有分组,则返回出分组(有小括号)匹配的列表,两边的东西都是负责确定提取数据所在的位置。

rs = re.findall('a(.+)bc','anbc',re.DOTALL)#['n']

r原串的使用

在python正则表达式中,一个转义符需要四个转义符匹配,比较麻烦,所以使用r原始字符串,能够忽略转义符带来的影响,待匹配的字符串中有多少个,r原串正则中就添加多少个即可。

rs = re.findall(r'a\nbc','a\nbc')#['a\nbc']

而r原串对换行符也没有任何影响

rs = re.findall(r'anbc','anbc')#['anbc']

拓展:r原串还可以解决写正则的时候,不符合PEP8的问题

 这个时候使用r原串就可以解决这个问题

rs = re.findall(r'd','a123')#['1', '2', '3']

案例:提取最新的各国疫情数据中的json的字符串

json模块:

json模块是python自带的模块,用于json与python数据之间的相互转换。

  json转化为python的核心代码:

 

 python类型数据转化为json字符串的核心代码:

python类型数据以json格式写入文件的核心代码:

 案例:解析最新的疫情数据的json字符串

 核心代码:

疫情爬虫项目:

实现采集最近一日世界各国疫情数据:

id等于多少,看网页源代码的 

要把json源文件提前新建在目录下,不然无法找到该文件

核心代码: 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号