python爬虫 urllib库基本使用
以下内容均为python3.6.*代码
学习爬虫,首先有学会使用urllib库,这个库可以方便的使我们解析网页的内容,本篇讲一下它的基本用法
解析网页
#导入urllib
from urllib import request # 明确url
base_url = 'http://www.baidu.com/'
# 发起一个http请求,返回一个类文件对象
response = request.urlopen(base_url)
# 获取网页内容
html = response.read().decode('utf-8') #将网页写入文件当中
with open('baidu.html','w',encoding='utf-8') as f:
f.write(html)
构造请求
有些网站通过获取浏览器信息判断是否是机器在操作 因此我们需要构造请求头
#导入模块
from urllib import request
base_url = 'http://www.xicidaili.com/'
# 构造请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
} # 构造请求对象
req = request.Request(base_url,headers=headers) # 发起请求
response = request.urlopen(req)
# 获取网页内容
html = response.read().decode() #打印获取的页面代码
print(html)
get请求传输数据
提交表单经常用到的就是post发送或者get发送。区别在于后者对于提交的内容会直接显示到url上。那么下面让我们尝试实现他们
from urllib import request,parse
import random #get要带的值
qs = {
'wd' : '妹子',
'a' : 1
}
#将携带的值转换为浏览器识别的值
qs = parse.urlencode(qs)
#拼接url
base_url = 'http://www.baidu.com/s?' + qs
#定义一个头列表用来随机获取
ua_list = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
] # 构造请求头
headers = {
# 随机构造user-agent
'User-Agent': random.choice(ua_list)
} # 构造请求对象
req = request.Request(base_url,headers=headers) # 发起请求
response = request.urlopen(req) # 获取请求内容
html = response.read().decode()html = response.read().decode()
post请求传输数据
from urllib import request,parse
base_url = 'http://fanyi.baidu.com/sug' # 构造请求表单数据
form = {
'kw' : "一只羊"
} #将携带的值转换为浏览器识别的值
form = parse.urlencode(form) # 构建post请求 ,如果指定data参数 ,则请求是post请求
req = request.Request(base_url,data=bytes(form,encoding='utf-8')) # 发起http post请求
response = request.urlopen(req) # 获取响应内容(json)
data= response.read().decode()
这样就模拟了简单的登录,当然,大部分网站是无法这样轻易的就登录的,但这段代码是模拟登录的核心
python爬虫 urllib库基本使用的更多相关文章
- Python爬虫Urllib库的高级用法
Python爬虫Urllib库的高级用法 设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Head ...
- Python爬虫Urllib库的基本使用
Python爬虫Urllib库的基本使用 深入理解urllib.urllib2及requests 请访问: http://www.mamicode.com/info-detail-1224080.h ...
- python爬虫 - Urllib库及cookie的使用
http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...
- 对于python爬虫urllib库的一些理解(抽空更新)
urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urllib库中,所有和网 ...
- Python爬虫--Urllib库
Urllib库 Urllib是python内置的HTTP请求库,包括以下模块:urllib.request (请求模块).urllib.error( 异常处理模块).urllib.parse (url ...
- python爬虫---urllib库的基本用法
urllib是python自带的请求库,各种功能相比较之下也是比较完备的,urllib库包含了一下四个模块: urllib.request 请求模块 urllib.error 异常处理模块 u ...
- Python爬虫urllib库的使用
urllib 在Python2中,有urllib和urllib2两个库实现请求发送,在Python3中,统一为urllib,是Python内置的HTTP请求库 request:最基本的HTTP请求模块 ...
- Python爬虫 Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...
- python爬虫urllib库使用
urllib包括以下四个模块: 1.request:基本的HTTP请求模块,可以用来模拟发送请求.就像在浏览器里输入网址然后回车一样,只需要给库方法传入URL以及额外的参数,就可以模拟实现这个过程. ...
随机推荐
- Generative Adversarial Networks,gan论文的畅想
前天看完Generative Adversarial Networks的论文,不知道有什么用处,总想着机器生成的数据会有机器的局限性,所以百度看了一些别人 的看法和观点,可能我是机器学习小白吧,看完之 ...
- Eclipse里的代码光标变成一个黑色块
以前经常在编写程序是不知到碰到键盘上的那个键了,或是那几个组合键了,使得Eclipse里的代码光标变成一个黑色块:在这个状态下,光标不在活动自如,只能一直往后写代码,就不想平时的 " | & ...
- Codeforces Round #499 (Div. 2) C Fly题解
题目 http://codeforces.com/contest/1011/problem/C Natasha is going to fly on a rocket to Mars and retu ...
- MVC005之页面调用控制器中的方法
描述:控制器在传给页面数据时,有时我们需要对传过来的数据进行二次处理 如: 1:传过来部门编码,但页面上要显示为部门名称 2:格式转换等 我们在写aspx时一般在cs文件中写一个protected的方 ...
- Could not load conf for core new_core 解決方法
new_core: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load ...
- 如何修改Eclipse的 workspace目录
Eclipse是一款很强的Java IDE, eclipse ide for eclipse committers 这里的committers 就是投稿者与执行者的意思,也就是说这个eclipse是为 ...
- 第三章 列表(a)接口与实现
- POJ-3126.PrimePath(欧拉筛素数打表 + BFS)
给出一篇有关素数线性筛和区间筛的博客,有兴趣的读者可以自取. 本题大意: 给定两个四位的素数,没有前导零,每次变换其中的一位,最终使得两个素数相等,输出最小变换次数.要求变换过程中的数也都是素数. 本 ...
- POJ-2386.Lakecounting(DFS求连通块)
本题是一道连通块的入门题,用来练手,后续还会更新连通块的题目. 本题大意:一个n * m 的陆地上面有很多水洼,让你统计水洼的个数并输出. 本题思路:按照顺序遍历陆地,如果发现水洼就将它的八连块都进行 ...
- Python+Selenium学习--上传文件
场景 文件上传操作也比较常见功能之一,上传功能操作webdriver 并没有提供对应的方法,关键上传文件的思路.上传过程一般要打开一个系统的window 窗口,从窗口选择本地文件添加.所以,一般会卡在 ...