爬虫之urllib模块

1. urllib模块介绍

  • python自带的一个基于爬虫的模块。
  • 作用:可以使用代码模拟浏览器发起请求。
  • 经常使用到的子模块:request,parse。
  • 使用流程:
    • 指定URL。
    • 针对指定的URL发起了一个请求。
    • 获取页面数据。
    • 持久化储存。

 

2. 爬取搜狗首页的页面数据

# 需求:爬取搜狗首页的页面数据
import urllib.request

# 1. 指定url
url = 'https://www.sogou.com/'

# 2. 发起请求:urlopen可以根据指定的url发起请求,且返回一个响应对象(byte类型)
response = urllib.request.urlopen(url)

# 3. 获取页面数据:read函数返回的就是响应对象中存储的页面数据
page_text = response.read()

# 4.  持久化存储
with open('./sougou.html','wb') as fp:
    fp.write(page_text)
    print('写入数据成功')

 

3. 爬取指定词条所对应的页面数据

import urllib.request
import urllib.parse

# 1. 指定url
url = 'https://www.sogou.com/web?query='

# url特性:url不可以存在非ASCII编码的字符数据
word = urllib.parse.quote('人民币')
url += word # 有效的url

# 2. 发起请求
response = urllib.request.urlopen(url=url)

# 3. 获取页面数据
page_text = response.read()
with open('rmb.html','wb') as fp:
    fp.write(page_text)

 

4.反爬和反反爬

  • 反爬机制:网站检查请求的UA,如果发现UA是爬虫程序,则拒绝提供网站数据。
  • User-Agent(UA):请求载体的身份标识,正常是浏览器。
  • 反反爬机制:伪装爬虫程序请求的UA,例如伪装成谷歌浏览器或火狐浏览器的身份标识。
mport urllib.request

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

# UA伪装
# 1. 自制定一个请求对象
headers = {
    # 存储任意的请求头信息
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
# 该请求对象的UA进行了成功的伪装
request = urllib.request.Request(url=url,headers=headers)

# 2. 针对自制定的请求对象发起请求
reponse = urllib.request.urlopen(request)

print(reponse.read())

 

5. post请求

import json
import urllib.request
import urllib.parse

# 一、 指定URL
url = 'https://fanyi.baidu.com/sug'

# 对post请求携带的参数进行处理。流程:
# 1. 将请求参数封装到字典中
data = {
    'kw':'西瓜'
}

# 2. 使用parse中的urlencode进行编码处理
data = urllib.parse.urlencode(data)

# 3. 将步骤2的编码结果转换成byte类型
data = data.encode()

# 二、发起post请求:urlopen函数的data参数表示的就是经过处理之后的post请求携带的参数
response = urllib.request.urlopen(url=url,data=data)

page_text = response.read()

with open('translate.json','ab') as fp:
    fp.write(page_text)

 

posted @ 2019-04-03 10:23  梁少华  阅读(221)  评论(0编辑  收藏  举报