博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
urllib模块
阅读量:6609 次
发布时间:2019-06-24

本文共 1629 字,大约阅读时间需要 5 分钟。

urllib模块


urllib模块是python中自带的一个基于爬虫的模块。可以使用代码模拟浏览器发起请求

 

# 需求:爬取搜狗首页的页面数据import urllib.request#1.指定urlurl = 'https://www.sogou.com/'#2.发起请求:urlopen可以根据指定的url发起请求,切返回一个响应对象response = urllib.request.urlopen(url=url)#3.获取页面数据:read函数返回的就是响应对象中存储的页面数据(byte)page_text = response.read()#4.持久化存储with open('./sougou.html','wb') as fp:    fp.write(page_text)    print('写入数据成功')

 

# 需求:爬取指定词条所对应的页面数据import urllib.requestimport urllib.parse#指定urlurl = 'https://www.sogou.com/web?query='#url特性:url不可以存在非ASCII编码的字符数据word = urllib.parse.quote("人民币")url += word #有效的url#发请求response = urllib.request.urlopen(url=url)#获取页面数据page_text = response.read()with open('renminbi.html','wb') as fp:    fp.write(page_text)

 反爬机制:网站检查请求的UA,如果发现UA是爬虫程序,则拒绝提供网站数据。

User-Agent(UA):请求载体的身份标识。

反反爬机制:伪装爬虫程序请求的UA

import urllib.requesturl = 'https://www.baidu.com/'#UA伪装#1.子制定一个请求对象headers = {    #存储任意的请求头信息    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'    }#该请求对象的UA进行了成功的伪装request = urllib.request.Request(url=url,headers=headers)#2.针对自制定的请求对象发起请求response = urllib.request.urlopen(request)print(response.read())

urlib模块发起的post请求

  • 需求:爬取百度翻译的翻译结果
import urllib.requestimport urllib.parse#1.指定urlurl = 'https://fanyi.baidu.com/sug'#post请求携带的参数进行处理  流程:#1.将post请求参数封装到字典data = {    'kw':'西瓜'}#2.使用parse模块中的urlencode(返回值类型为str)进行编码处理data = urllib.parse.urlencode(data)#3.将步骤2的编码结果转换成byte类型data = data.encode()#2.发起post请求:urlopen函数的data参数表示的就是经过处理之后的post请求携带的参数response = urllib.request.urlopen(url=url,data=data)response.read()

 

转载于:https://www.cnblogs.com/Xuuuuuu/p/10751255.html

你可能感兴趣的文章
类型和声明笔记
查看>>
Epoll模型【转】
查看>>
NB卡开卡注意事项【转】
查看>>
如何在linux下检测内存泄漏(转)
查看>>
SQL Server数据库可能遇到的报错
查看>>
Java中设置classpath、path、JAVA_HOME的作用
查看>>
Spring+Struts2+Hibernate框架整合流程
查看>>
LeetCode OJ:Peeking Iterator(peeking 迭代器)
查看>>
对nginx中location的认识
查看>>
通过url获取图片尺寸的几种方法:JS和php
查看>>
WebApi && Swagger 及Swagger配置
查看>>
Gitlab Issue Tracker and Wiki(二)
查看>>
header 里面的content-type
查看>>
Jmeter安装出现Not able to find Java executable or version问题解决方案
查看>>
基于神念TGAM的脑波小车(2)
查看>>
android获取系统wifi状态等
查看>>
js 设计模式
查看>>
HDU-3787(字符串模拟)
查看>>
十四、oracle 数据库管理--管理表空间和数据文件
查看>>
机器学习方法--分类、回归、聚类
查看>>