python爬虫学习第一天

爬虫相关概念
学习urllib(自带库,无需下载)

#使用urllib获取百度首页源码

import urllib.request

#1.定义一个url你要访问的地址
url='http://www.baidu.com'

#2.模拟浏览器向服务器发请求,返回为响应结果(response这里理解一下,不是request)
response=urllib.request.urlopen(url);

#3.获取response的源码
#read 获取源码,返回为二进制数据
#decode 将read后的二进制数据解码成字符串
content=response.read().decode('utf8');

#4.
print(content)

一个类型六个方法

#一个类型六个方法

import urllib.request

#1.定义一个url你要访问的地址
url='http://www.baidu.com'

#2.模拟浏览器向服务器发请求,返回为响应结果(response这里理解一下,不是request)
response=urllib.request.urlopen(url)
#HTTPResponse类型
print(type(response))
#3.获取response的源码
#read 获取源码,返回为二进制数据
#content=response.read(5)  #读5个字节
#content=response.readline()  #只读一行
#content=response.readlines()  #读所有行
#content=response.getcode()  #读状态码:200正常,还有404、500
#content=response.geturl()  #读url
content=response.getheaders()  #读状态信息


#4.
print(content)

下载一些资源
(图片下载但有问题,因为是小白,上网查说是由防盗链,想着后面学习后再去解决)

import urllib.request
#下载一些资源:网页、图片、视频

url_page='http://www.baidu.com'
#urlretrieve下载,第一个参数是下载的资源地址(也可以写成url=url_page)
# 第二个参数是自定义名称,注意后缀:网页.html;图片:jpg;视频:MP4
#下载的资源放在此项目下
#urllib.request.urlretrieve(url_page,'baidu.html')
#url_img='https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=jpg%E6%A0%BC%E5%BC%8F%E5%9B%BE%E7%89%87&hs=0&pn=7&spn=0&di=58720257&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=3364492900%2C3114563073&os=3460086992%2C3234013378&simid=3364492900%2C3114563073&adpicid=0&lpn=0&ln=30&fr=ala&fm=&sme=&cg=&bdtype=14&oriquery=jpg%E6%A0%BC%E5%BC%8F%E5%9B%BE%E7%89%87&objurl=https%3A%2F%2Fimg.alicdn.com%2Fbao%2Fuploaded%2Fi2%2F2208008258712%2FO1CN010Bcre02EE98uFCKmi_!!2-item_pic.png&fromurl=ipprf_z2C%24qAzdH3FAzdH3F1jpwts_z%26e3Bp4wss_z%26e3Bv54AzdH3Ftpj4_z%26e3Bip4%3Ft1%3Dmdmaal0c8998&gsm=&islist=&querylist=&dyTabStr=MCwzLDYsNCwyLDEsNSw3LDgsOQ%3D%3D'
#urllib.request.urlretrieve(url_img,'sea.jpg')

对象的定制(遇到一种类型的反爬,假浏览器)

import urllib.request

url='https://www.baidu.com'

#url的组成:https://www.baidu.com/baidu?tn=
# 协议   主机              端口号   路径     参数   锚点
# https  www.baidu.com          baidu  ?之后的
#http  80;https:443;mysql:3306;oracle:1521;redis:6379;mongo:27017

#遇到反爬,因为给的数据不完整-->UA,伪装UA
#找UA:上网搜UA大全;打开网页看f12,刷新,network中的www.baidu.com(即域名)   header中的user-agent
#User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
#做成字典
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}

#看urlopen源码:发现没有参数可以放字典,但是说其中可以放个request 对象
#因此  我们进行请求对象的定制Request
#注意:Request 第二个参数是date,有顺序,因此得这样给参数赋值
request=urllib.request.Request(url=url,headers=headers)
response=urllib.request.urlopen(request)
content=response.read().decode('utf8')
print(content)

.get请求方式:urllib.parse.quote()

#百度访问周杰伦界面
import urllib.request
import urllib.parse

#方法一:硬写
#https://www.baidu.com/baidu?tn=monline_4_dg&ie=utf-8&wd=%E5%91%A8%E6%9D%B0%E4%BC%A6
# url='https://www.baidu.com/baidu?tn=monline_4_dg&ie=utf-8&wd=%E5%91%A8%E6%9D%B0%E4%BC%A6'
#
# headers={
# 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0'
# }
#
# #看urlopen源码:发现没有参数可以放字典,但是说其中可以放个request 对象
# #因此  我们进行请求对象的定制Request
# #注意:Request 第二个参数是date,有顺序,因此得这样给参数赋值
# request=urllib.request.Request(url=url,headers=headers)
# response=urllib.request.urlopen(request)
# content=response.read().decode('utf8')
# print(content)

#方法二:quote get法
#以上代码可以输出结果,但是有个问题,就是 %E5%91%A8%E6%9D%B0%E4%BC%A6 其实是unicode编码,中文对应的是周杰伦
#但是如果我们想要查陈奕迅,总不能自己手动改
#因此,我们需要一个将字符串转化为unicode编码的程序  ,即urllib.parse.quote()

url='https://www.baidu.com/baidu?tn=monline_4_dg&ie=utf-8&wd='

name=urllib.parse.quote('周杰伦')
#字符串拼接
url=url+name


headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0'
}

#看urlopen源码:发现没有参数可以放字典,但是说其中可以放个request 对象
#因此  我们进行请求对象的定制Request
#注意:Request 第二个参数是date,有顺序,因此得这样给参数赋值
request=urllib.request.Request(url=url,headers=headers)
response=urllib.request.urlopen(request)
content=response.read().decode('utf8')
print(content)

你可能感兴趣的:(任务之旅,python,爬虫,学习)