首页 > 编程语言 >Python——爬虫准备工作

Python——爬虫准备工作

时间:2022-10-26 20:11:06浏览次数:49  
标签:wb4 Python list 爬虫 re 模块 准备 home data

Python——爬虫准备工作

第三方模块的下载与使用

'''
第三方模块:
	别人写的模块,一般情况下,功能都非常强大
	
使用第三方模块:
	第一次使用必须先下载,后面才可以反复使用(下载后相当于内置模块)

下载第三方模块的方式:
	pip是Python包管理工具,该工具提供了对Python包的查找、下载、安装和卸载的功能。
	
软件包也可以在https://pypi.org/ 中找到

目前最新版的python版本已经预装了pip

	ps:每个版本的解释器都有自己的pip工具,在使用的时候,我们要注意自己用的到底是那个,为了避免pip冲突,我们可以在使用的时候添加对应的版本号。
	
下载第三方模块的相关操作:

	下载第三方模块的dos命令:
		pip install 模块名
	下载第三方模块临时切换仓库:
		pip install 模块名 -i 仓库地址
		
	下载第三方模块指定版本(不指定为最新版)
		pip install 模块名==版本号 -i 仓库地址
	
	也可以使用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的仓库地址有很多 百度查询即可
		清华大学 :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/
'''

requests模块

'''
	Python中内置了requests模块,该模块只要用来发送HTTP请求。
	requests模块能够模拟浏览器发送网络请求
'''
import requests
# 向指定网址发送请求,获取页面数据
res = requests.get('网址')
# content 获取bytes类型的网页数据
print(res.content) 
# 指定编码
res.encoding = 'utf8'
# 获取字符串类型的网页数据(默认为utf8)
res.text

requests的属性和方法

方法 描述
delete(url, args) 发送 delete 请求到指定 url
get(url, params, args) 发送 get 请求到指定 url
head(url, data, args) 发送 head 请求到指定 url
patch(url, data, args) 发送 patch 求到指定 url
post(url, data, json, args) 发送 post 请求到指定 url
put(url, data, args) 发送 put 请求到指定 url
request(method, url, args) 向指定的 url 发送指定的请求方法

爬取二手房数据

import requests
import re
 
res = requests.get('https://sh.lianjia.com/ershoufang/pudong/')
# print(res.text)
data = res.text
 
home_title_list = re.findall(
    '<a class="" href=".*?" target="_blank" data-log_index=".*?"  data-el="ershoufang" data-housecode=".*?" data-is_focus="" data-sl="">(.*?)</a>',
    data)
# print(home_title_list)
home_name_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?) </a>', data)
# print(home_name_list)
home_street_list = re.findall(
    '<div class="positionInfo"><span class="positionIcon"></span><a href=".*?" target="_blank" data-log_index=".*?" data-el="region">.*? </a>   -  <a href=".*?" target="_blank">(.*?)</a> </div>',
    data)
# print(home_street_list)
home_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>', data)
# print(home_info_list)
home_watch_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>', data)
# print(home_watch_list)
home_total_price_list = re.findall(
    '<div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>万</i></div>', data)
# print(home_total_price_list)
home_unit_price_list = re.findall(
    '<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div>', 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文件的后缀名问题
	03版本之前
    	.xls
 	03版本之后
    	.xlsx
        
2.操作excel表格的第三方模块
	xlwt往表格中写入数据、wlrd从表格中读取数据
    	兼容所有版本的excel文件
 	openpyxl最近几年比较火热的操作excel表格的模块
    	03版本之前的兼容性较差
	ps:还有很多操作excel表格的模块 甚至涵盖了上述的模块>>>:pandas
       
3.openpyxl操作
'''
from openpyxl import Workbook
    # 创建一个excel文件
    wb = Workbook()
    # 在一个excel文件内创建多个工作簿
    wb1 = wb.create_sheet('学生名单')
    wb2 = wb.create_sheet('舔狗名单')
    wb3 = wb.create_sheet('海王名单')
    # 还可以修改默认的工作簿位置
    wb4 = wb.create_sheet('富婆名单', 0)
    # 还可以二次修改工作簿名称
    wb4.title = '高富帅名单'
    wb4.sheet_properties.tabColor = "1072BA"
 
    # 填写数据的方式1
    # wb4['F4'] = 666
    # 填写数据的方式2
    # wb4.cell(row=3, column=1, value='jason')
    # 填写数据的方式3
    wb4.append(['编号', '姓名', '年龄', '爱好'])  # 表头字段
    wb4.append([1, 'jason', 18, 'read'])
    wb4.append([2, 'kevin', 28, 'music'])
    wb4.append([3, 'tony', 58, 'play'])
    wb4.append([4, 'oscar', 38, 'ball'])
    wb4.append([5, 'jerry', 'ball'])
    wb4.append([6, 'tom', 88,'ball','哈哈哈'])
 
    # 填写数学公式
    # wb4.cell(row=1, column=1, value=12321)
    # wb4.cell(row=2, column=1, value=3424)
    # wb4.cell(row=3, column=1, value=23423432)
    # wb4.cell(row=4, column=1, value=2332)
    # wb4['A5'] = '=sum(A1:A4)'
    # wb4.cell(row=8, column=3, value='=sum(A1:A4)')
 
 
    # 保存该excel文件
    wb.save(r'111.xlsx')
 
"""
openpyxl主要用于数据的写入 至于后续的表单操作它并不是很擅长 如果想做需要更高级的模块pandas
 
import pandas
 
data_dict = {
    "公司名称": comp_title_list,
    "公司地址": comp_address_list,
    "公司邮编": comp_email_list,
    "公司电话": comp_phone_list
}
# 将字典转换成pandas里面的DataFrame数据结构
df = pandas.DataFrame(data_dict)
# 直接保存成excel文件
df.to_excel(r'pd_comp_info.xlsx')
 
 
 
excel软件正常可以打开操作的数据集在10万左右 一旦数据集过大 软件操作几乎无效
需要使用代码操作>>>:pandas模块
"""

练习

# coding:utf-8
# 如何爬取二手房指定页数的数据
import re
import requests as requests

choice = input('请输入您想查看的页数').strip()
if not choice.isdigit():
    print('请输入数字')
choice = int(choice)
for i in range(1, 101):
    if choice in range(1, 101):
        address = f'https://sh.lianjia.com/ershoufang/pudong/pg{choice}/'
    else:
        print('页数不存在')
print(address)
res = requests.get(address)
data = res.text
home_title_list = re.findall(
    '<a class="" href=".*?" target="_blank" data-log_index=".*?"  data-el="ershoufang" data-housecode=".*?" data-is_focus="" data-sl="">(.*?)</a>',
    data)
home_name_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?) </a>', data)

home_street_list = re.findall(
    '<div class="positionInfo"><span class="positionIcon"></span><a href=".*?" target="_blank" data-log_index=".*?" data-el="region">.*? </a>   -  <a href=".*?" target="_blank">(.*?)</a> </div>',
    data)

home_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>', data)

home_watch_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>', data)

home_total_price_list = re.findall(
    '<div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>万</i></div>', data)

home_unit_price_list = re.findall(
    '<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div>', data)

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
           """ % data
        )

标签:wb4,Python,list,爬虫,re,模块,准备,home,data
From: https://www.cnblogs.com/HaiMan/p/16829851.html

相关文章

  • 爬虫、openpyxl、pandas
    目录今日内容概要今日内容详细作业详解第三方模块的下载与使用网络爬虫模块之requests模块网络爬虫实战之爬取链家二手房数据自动化办公领域之openpyxl模块homework今日内......
  • python进阶之路21 正则应用 第三方模块之requests模块 openpyxl模块 简易爬虫(panda
    作业讲解"""网络爬虫没有我们现在接触的那么简单 有时候页面数据无法直接拷贝获取 有时候页面还存在防爬机制弄不好ip会被短暂拉黑"""http://www.redbull.com.cn/ab......
  • 23、python模块篇 第三方模块、requests模块、openpyxl模块
    目录一、第三方模块的下载与使用1、什么是第三方模块2、如何安装第三方模块方式一:pip工具方式二:pycharm中下载3、注意事项1、报错并有警告信息2、报错,提示关键字3、报错,无......
  • day22爬虫
    第三方模块的下载与使用网络爬虫模块之requests模块网络爬虫实战之爬取链家二手房数据自动化办公领域之openpyxl模块今日内容详细作业讲解"""网络爬虫没有我们......
  • 网络爬虫之requests模块
    第三方模块的下载与使用网络爬虫模块之requests模块网络爬虫实战之爬取链接二手房数据自动化办公领域之openpyxl模块第三方模块的扩展(模块叠模块)网络爬虫之小实战......
  • requests模块/openpyxl模块/简单爬虫实战
    内容概要第三方模块的下载及使用网络爬虫及requests模块网络爬虫实战爬取二手房信息自动化办公领域模块openpyxl练习题及答案第三方模块的下载第三方模块就类似与......
  • 网络爬虫及openyxl模块
    网络爬虫及openyxl模块一、第三方模块简介1.第三方模块的用处python之所以在这么多的编程语言中脱颖而出的优点是有众多的第三方库函数,可以更高效率的实现开发2.......
  • python协程
    1、概念协程,又称微线程。协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。为啥说它是一个执行单元,因为它自带CPU上下文。......
  • 【python】创意二维码那么多,咋不的掺和一下整一手~
    前言嗨喽~大家好呀,这里是魔王呐!网上有很多的创意二维码,看了,别的不说羡慕肯定是有的,羡慕有了这不得自己整点活~今天我们就来试试只用几行代码,生成动态二维码!开发环......
  • python numpy 基础科学计算包,数学函数库
    pipinstallnumpynumpy.array()函数,强大的N维数组对象ndarrayimportnumpyasnpa=np.array([1,2,3])print(a)[123]#多于一个维度importnumpyasnpa......