python基础语法+爬虫+图像处理+NumpyPandas数据处理(12天速成,第7天上-爬虫Scrapy)

python 复制代码
爬虫(Scrapy):
    写一段程序代码(网络访问),自动获取网页(网络)上的数据

服务端语言:网络编程,都可以作为爬虫
    java c c++ python 等均可写爬虫程序
    js不是一个典型的服务端程序,js-->node.js也可以做网络爬虫

python语言更高级,使用更便捷,库更丰富,代码量更少
    c:100行  java:50行  python:5行

本身这是一个简单的问题,就是网络访问+数据解析

但是,目前爬虫也逐渐演变成一门较为复杂的技术场景:
    客户一直在尝试去爬;服务器一直在不断升级,反爬虫。
    客户端---服务端不断较量

为什么服务器要进行反爬虫:@1数据安全  @2并发问题,造成网站拥堵

爬虫的业务场景:
简单---》困难

@1 直接访问网页,就能获取数据

@2 数据不在网页上,而是需要通过查找数据接口,得到数据(服务器使用的是前后端分离模式开发)

@3 数据既不在网页上,也没有找到合适的数据接口,通过selenium自动化测试手段,获取数据

@4 服务端设置了各种验证手段,阻止爬虫数据(验证码、密码、拖动验证、单击验证等)
python 复制代码
java实现网络访问的第三方的jar包
    java\c中有socket编程,是底层网络访问技术的语言支持,但是直接使用,会显得繁琐
    很多第三方的公司对功能进行封装,生成jar包,使用这些jar会更方便。

python实现网络访问的第三方库:
    python有socket编程,是底层网络访问技术的语言支持,但是直接使用,会显得繁琐
    很多第三方公司对功能进行封装,生成库,使用这些库会更方便。

requests、beautifulsoup4、lxml等库
使用第三方库之前,需要安装 这些库
(检测一下有没有这些库)【安装anaconda时,已经将一些常用库安装了】

安装第三方库,在dos窗口直接输入pip指令即可,安装完anaconda时默认安装了pip

可能需要配置一下环境变量【百度自行解决】

pip install xxx

xxx为库名

库的位置都是在国外服务器上,所以整个过程会显得有些慢,

在安装时其实可以通过-i,来指定国内服务器镜像,安装速度会快一些。

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple/

python 复制代码
使用request 第三方库,来进行网络访问
python 复制代码
import requests

# 伪装成浏览器
    # 在请求头中添加 user-agent
tou = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}

# 访问地址,得到响应
resp = requests.get('https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?type=',headers=tou);

ct = resp.content.decode('utf-8');# 80%以上均为utf-8

print(ct) # 打印就是得到的整个网页,html页面
python 复制代码
# 解析html数据,得到我们想要的那些部分的内容
beautifulsoup库
    解析HTML页面,查询目标数据
python 复制代码
from bs4 import BeautifulSoup
# 将html网页,转换为BeautifulSoup对象
bs = BeautifulSoup(ct,'lxml'); # 不要把l,看成了1

# 从bs中查找 想要的数据【css选择器】
    #css选择器
        #标签、class、id等几种类型
        #作用:定位页面元素

# 通过css选择器,来定位包含目标数据的那些页面元素

sa = bs.select('.subject-item .info h2 a');# 较为重要的一步同,需要程序员认真编写
print(len(sa)) # 20个标签
复制代码
20
python 复制代码
#获取标签的属性/标签的内容
#sa是一个集合,先取第一个元素(第一本书)的名字
bookname = sa[0].get_text(); #get_text()函数作用是获取标签的内容
print(bookname.replace(' ','').replace('\n',''))
复制代码
太白金星有点烦
python 复制代码
#1、打印全部的20本书的书名
python 复制代码
for i in range(len(sa)):
    bookname = sa[i].get_text(); #get_text()函数作用是获取标签的内容
    print(bookname.replace(' ','').replace('\n',''))
复制代码
太白金星有点烦
长安的荔枝
额尔古纳河右岸
繁花
明亮的夜晚
活着
我们八月见
十八岁出门远行
名侦探的献祭:人民教会杀人事件
秋园
豆子芝麻茶:和妈妈的最后絮叨
巴别塔
一句顶一万句
绝叫
生死疲劳
悉达多:一首印度的诗
长夜难明:双星
在细雨中呼喊
六个说谎的大学生
三体:"地球往事"三部曲之一
python 复制代码
#2、在打印书名时,打印每本书的价格
python 复制代码
sc = bs.select('.subject-item .info .pub')
for i in range(len(sa)):
    bookname = sa[i].get_text(); #get_text()函数作用是获取标签的内容
    bookprice = sc[i].get_text();
    print(bookname.replace(' ','').replace('\n',''),' ',bookprice.replace(' ','').replace('\n','').split('/')[-1].replace('元',''))
复制代码
太白金星有点烦   45.00
长安的荔枝   45.00
额尔古纳河右岸   32.00
繁花   48.00
明亮的夜晚   52
活着   20.00
我们八月见   39.00
十八岁出门远行   45
名侦探的献祭:人民教会杀人事件   59.00
秋园   38.00
豆子芝麻茶:和妈妈的最后絮叨   39.8
巴别塔   98.00
一句顶一万句   68.00
绝叫   58.00
生死疲劳   69.90
悉达多:一首印度的诗   32.00
长夜难明:双星   65.00
在细雨中呼喊   25.00
六个说谎的大学生   45.00
三体:"地球往事"三部曲之一   23.00
相关推荐
Lee魅儿9 分钟前
ffmpeg webm 透明通道视频转成rgba图片
python·ffmpeg
Bi8bo715 分钟前
Python编程基础
开发语言·python
项目題供诗17 分钟前
黑马python(七)
python
是紫焅呢1 小时前
N数据分析pandas基础.py
python·青少年编程·数据挖掘·数据分析·pandas·学习方法·visual studio code
胖墩会武术2 小时前
Black自动格式化工具
python·格式化·black
struggle20252 小时前
DIPLOMAT开源程序是基于深度学习的身份保留标记对象多动物跟踪(测试版)
人工智能·python·深度学习
发现你走远了2 小时前
什么是状态机?状态机入门
python·状态机
可能是猫猫人3 小时前
【Python打卡Day39】图像数据与显存 @浙大疏锦行
开发语言·python
爬虫程序猿3 小时前
利用 Python 爬虫获取 Amazon 商品详情:实战指南
开发语言·爬虫·python
aiweker3 小时前
python web开发-Flask 重定向与URL生成完全指南
前端·python·flask