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

python网络爬虫模块

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

python网络爬虫模块

re模块

想在python中使用正则表达式,可以使用re模块来辅助筛选。

1.findall

查找数据中所有符合条件的数值,最后的结果以列表形式输出。(贪婪匹配)

import re

res = re.findall('l', 'hello') # ['l', 'l']

2.finditer

功能与findall一致,不过最后以迭代器形式输出。

import re

res = re.finditer('l', 'hello')
# 

3.search

查找数据中符合条件的数值,查找到一个就直接停止。(非贪婪匹配)

search输出形式为迭代器,span表示目标在数据中的坐标位置,可以用group方法只输出数据。

import re

res = re.search('a', 'abcabc')
# 

res.group() # a

4.match

判断头部是否匹配条件,只匹配头部。

match输出形式也是迭代器,但头部匹配不成立的情况下会输出None

import re

res = re.match('a', 'balance') # None

5.compile

compile可以提前制作一个正则表达式,需要时直接提用,节约代码空间

import re

obj = re.compile('a')

res = re.findall(obj, 'abcabc') # 相当于把条件用变量的形式输入
re模块的特殊功能

1.分组

给判断条件中的字符添加括号,就是给条件分组。所有字符都会参与匹配,但是输出时优先显示分组内的字符。

import re

res = re.findall('abc', 'abcabcabcabc')
# ('abc', 'abc', 'abc', 'abc')

res1 = re.findall('a(b)c', 'abcabcabcabc')
# ('b', 'b', 'b', 'b')

2.别名

别名就是给分组取名,输出时如果写了别名优先输出对应的分组。

取名方式为在括号内输入?p<组名>

import re

res = re.search('a(?Pb)(?Pc)','abcabcabcabc')
print(res.group('id'))
print(res.group('name'))
网络爬虫简介

网络爬虫就是从计算机到互联网上获取信息,除了自主上网获取信息外,还可以使用代码获取网页上的信息。

第三方模块下载

在python中自带第三方模块的下载与导入。

使用命令提示符
pip解释器版本名 install 模块名

pip3.10 install requests

执行之后等待下载进度完成即导入成功。

注意:第三方模块导入之后无法跨版本使用,只能在安装的版本调用。

默认的下载地址为国外网站,也可以手动更改成国内网站

pip3.10 install 模块名 -i 源地址

部分国内下载地址

清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学:http://pypi.hustunique.com/
豆瓣源:http://pypi.douban.com/simple/
腾讯源:http://mirrors.cloud.tencent.com/pypi/simple
华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/

使用pycharm

打开pycharm左上角的file / setting,选中左侧的project:文件名,在这里会显示当前解释器安装的所有模块目录。

 然后点击任意模块进入下载界面,在上面搜索栏输入模块名,选中之后点击左下角的install即可自动下载和导入模块。

 

使用requests模块获取信息

1.获取网址及信息

网页本身由代码构成,所有信息都可以在代码上赋值到本地。

本次例子由红牛官网 畅饮每时每刻

import requests

res = requests.get('网址') # 相当于在浏览器输入网址

print(res.content)  # 获取页面bytes类型的数据

print(res.text)  # 获取解码之后的数据,相当于在网页按f12查看源代码


with open(r'hn.html','wb') as f:  #为了避免每次执行都要从网络上下载数据,可以先保存到本地
    f.write(res.content)

2.读取数据

import re,request

with open(r'hn.html', 'r', encoding='utf8') as f:  # 读取页面数据
    data = f.read()
company_name_list = re.findall('(.*?)', data)
#获取所有的分公司名称
company_addr_list = re.findall("

(.*?)

", data) #获取所有的分公司地址 print(company_addr_list) company_email_list = re.findall("

(.*?)

", data) #获取所有的分公司邮箱 print(company_email_list) company_phone_list = re.findall("

(.*?)

", data) #获取所有的分公司电话 print(company_phone_list)

3.整合打包信息

res = zip(company_name_list, company_addr_list, company_email_list, company_phone_list)
#将获得的信息按照上述名称分组

4.格式化输出

for i in res: 
    print("""
    公司名称:%s
    公司地址:%s
    公司邮箱:%s
    公司电话:%s
    """ % i)
# ('红牛杭州分公司', '杭州市上城区庆春路29号远洋大厦11楼A座', '310009', '0571-87045279/7792')
openpyxl模块

openpyxl模块是python中用于操控链接excel表格的模块之一,openpyxl相比其他使用excel的模块操作更加简单。

1.创建excel文件

from openpyxl import Workbook  # 导入模块

wb = Workbook() #创建文件

wb1 = wb.create_sheet('成绩表') #创建表

wb.save(r'111.xlsx') #将文件命名为括号内字符并保存

2.写入数据

方式一:坐标

将位置填写在括号内

wb1['A1'] = '信息'

方式二:cell

wb1.cell(row=3, column=2, value='信息')

方式三:append

使用append时会以一次一行的方式添加数据,如果没有数据输入可以用None代替。

wb1.append(['username','password','age','gender','hobby'])
wb1.append(['jason1',123,18,'male','read'])
wb1.append(['jason2',123,18,'male','read'])

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

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

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