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以及额外的参数,就可以模拟实现这个过程. ...
随机推荐
- js基础-对象
对象是一组属性方法的无序集 除了字符串.数值类型.布尔类型.null.undefined 之外的其他都是对象类型 对象都是引用类型 Object类型对象.数组类型对象 如果一个普通函数前面加了new ...
- linux编译安装php apache mysql (已试过)
阅读目录 (全部使用源码安装方式,先安装mysql,然后是apache,再是php,这样好像能防止挺多问题的,期间出现问题基本是依赖没有或者版本不对) 1.简介 2.安装apache 2.1.yum方 ...
- Spring Boot Maven 打包 Jar
Maven pom.xml 必须包含 <packaging>jar</packaging> <build> <plugins> <plugin&g ...
- SVN基本页面
- Java获得数据库查询结果的列数和行数,打印查询结果
Java连接数据库及简单操作见我以前的一篇随笔:http://www.cnblogs.com/meitian/p/5036332.html 一.获取查询结果的行数和列数 查询结果为ResultSe ...
- 665. Non-decreasing Array
Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...
- oracle 调试数据库
转载:https://www.cnblogs.com/liuqiyun/p/6589814.html 工具/原料 PL\SQL Oracle 方法/步骤 首先在PL/SQL的左侧资源栏中展 ...
- hibernate中调用query.list()而出现的黄色警告线
使用hibernate的时候会用到hql语句查询数据库, 那就一定会用到query.list();这个方法, 那就一定会出现一个长长的黄色的警告线, 不管你想尽什么办法, 总是存在, 虽然说这个黄色的 ...
- js实现右击
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...
- HDU-1212.BigNumber(有关模数的定理)
本题大意:给出一个1000位以内的大数和一个小数,让你计算并给出大数对小数取余的结果. 本题思路:由下面的公式可以推出本题的计算公式,套入即可解决,建议自己把这个公式推一下,很简单的... 参考代码: ...