## 网络爬虫模块 ### 第三方模块的下载与使用 第三方模块: 别人写的模块 一般情况下功能都特别强大 如果想使用第三方模块 第一次使用必须先下载后面才能反复使用(等同于内置模块) 下载第三方模块的方式 #### 1.pip工具 注意每个解释器都要pip工具 如果我们的电脑上有多个版本的解释器那么我们在使用pip的时候一定要注意到底用的是哪一个 否则极其容易出现使用的A版本解释器然后使用B版本的pip下载模块,导致冲突,或者不能使用 为了避免pip冲突 我们在使用的时候可以添加对应的版本号 python27 pip2.7 python36 pip3.6 python38 pip3.8 下载第三方模块的句式 pip install 模块名 下载第三方模块临时切换仓库 pip install 模块名 -i 仓库地址 下载第三方模块指定版本(不指定默认是最新版) pip install 模块名==版本号 -i 仓库地址 2.pycharm提供快捷方式   #### 下载第三方模块可能会出现的问题 1. 报错并有警告信息 WARNING: You are using pip version 20.2.1; 原因在于pip版本过低 只需要拷贝后面的命令执行更新操作即可 d:\python38\python.exe -m pip install --upgrade pip 更新完成后再次执行下载第三方模块的命令即可 2. 报错并含有Timeout关键字 说明当前计算机网络不稳定 只需要换网或者重新执行几次即可 3. 报错并没有关键字 面向百度搜索 pip下载XXX报错:拷贝错误信息 通常都是需要用户提前准备好一些环境才可以顺利下 4. 下载速度很慢 pip默认下载的仓库地址都是国外的python.org 可以切换到国内仓库地址,进行下载 pip install 模块名 -i 仓库地址 pip的仓库地址很多 百度即可查询到 ```python 清华大学 : 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/ ``` 5. 修改仓库地址 1. 第一种 一次修改全部解释器pip都可使用  需要写入文件内的 [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple 修改完毕后保存,然后重新打开IDE工具,CMD,解释器环境,即可使用国内仓库下,速度嘎嘎快 2. 第二种 针对pycharm修改  ### 网络爬虫模块之requests模块 ```python requests模块能够模拟浏览器发送网络请求 import requests #1.朝指定网址发送请求获取页面数据(等价于:浏览器地址栏输入网址回车访问) res = requests.get('http://www.redbull.com.cn/about/branch') print(res.content) # 获取bytes类型的网页数据(二进制) res.encoding = 'utf8' # 指定编码类型 print(res.text) # 获取字符串类型的网页数据(默认按照utf8) ``` ### 网络爬虫实战之爬取链家二手房数据 ```python import requests import re res = requests.get('https://sh.lianjia.com/ershoufang/pudong/') print(res.text) data = res.text home_title_list = re.findall('(.*?)', data) print(home_title_list) home_name_list = re.findall( '.*? - (.*?) ', data) print(home_name_list) home_street_list = re.findall( '.*? - (.*?) ', data) print(home_street_list) home_info_list = re.findall('(.*?)', data) print(home_info_list) home_watch_list = re.findall('(.*?)', data) print(home_watch_list) home_total_price_list = re.findall( ' (.*?)万', data) print(home_total_price_list) home_unit_price_list = re.findall( '(.*?)', data) print(home_unit_price_list) home_data = zip(home_title_list, home_name_list, home_street_list, home_info_list, home_watch_list, home_total_price_list, home_unit_price_list) with open(r'home_data.txt','w',encoding='utf8') as f: for data in home_data: print( """ 房屋标题:%s 小区名称:%s 街道名称:%s 详细信息:%s 关注程度:%s 房屋总价:%s 房屋单价:%s """%data ) f.write(""" 房屋标题:%s 小区名称:%s 街道名称:%s 详细信息:%s 关注程度:%s 房屋总价:%s 房屋单价:%s\n """%data) ``` ### 自动化办公领域之openpyxl模块 1. excel文件的后缀名问题提 1. 03版之前 文件名.xls 2. 03版之后 文件名.xlsx 2. 操作excel表格的第三方模块 1. xlwt往表格中写入数据、xlrd从表格中读取数据 兼容所有版本的excel文件 2. openpyxl最近几年比较火的操作excel表格的模块 03版之前兼容较差 3. ps:还有很多操作excel表格的模块 甚至涵盖了上述的模块pandas模块,也是一个非常强大的模块 3. 在使用一个陌生的模块的时候 1. 学会看官方文档 2. 查看官方教程 4. openpyxl操作 ```python ''' Author:clever-cat time :2022/10/26-19:29 ''' from openpyxl import workbook wb = workbook.Workbook() # 创建一个excel文件 # 可以在一个excel文件内创建多个工作蒲 del wb['Sheet'] # 删除默认创建的sheet表单 sheet1 = wb.create_sheet('富婆通讯录', 0) # 创建表单 第一个参数是指定表单位置 sheet2 = wb.create_sheet('学生名单') sheet3 = wb.create_sheet('舔狗名单') sheet4 = wb.create_sheet('海王名单') sheet1.title = '富婆信息' # 添加数据的方式3 sheet1.append(['地址', '姓名', '爱好', '手机号']) # 添加数据到表格 # 添加数据的方式1 sheet1['E1'] = '生日' # 添加数据的方式2 sheet1.cell(1, 6, value='习惯') for i in range(4): sheet1.append([k for k in range(1, 7)]) # 填写数学公式 sheet1.cell(6, 6, value='=SUM(A2:F5)') # 修改工作蒲背景颜色 sheet1.sheet_properties.tabColor = '1072BA' # 保存excel文件 wb.save(r'tel.xlsx') """ openpyxl主要用于数据的写入 至于后续的表单操作它并不擅长 如果想做需要 更高级的模块pandas """ import pandas data = [i for i in range(1, 7)] data_dict = { '地址': data, '姓名': data, '爱好': data, '手机号': data, '生日': data, '习惯': data } datas = pandas.DataFrame(data_dict) datas.to_excel('tt.xlsx') """ excel软件正常可以操作的数据集在10万左右,一旦数据集过大 软件操作几乎无效 需要使用代码操作 pandas模块 """ ``` Last modification:November 6th, 2022 at 04:02 pm © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments
Comment here is closed