手动爬虫之流程笔记1(python3)
一、引入拓展库
由于刚刚起步学习爬虫,故从urllib库开始
首先引入urllib,这里主要用到urllib中request类
import urllib.request as ur
二、设置全局参数
我把它分为三个变量:代理服务器IP、目标网址、存放路径。
# 代理服务器的地址
proxy_add = "110.183.238.145:811"
# 获取目标网址
url = "https://www.baidu.com"
# 设置目标文档(路径+文件名【包括后缀】)
aim_file = "E:/workspace/PyCharm/codeSpace/books/python_web_crawler_book/chapter4/demo2/1.html"
三、将爬虫模拟成浏览器访问页面
由于urlopen不支持一些HTTP的高级功能,所以要想达到预期的访问效果,有两种方式。
一是使用build_opener()修改报头,二是使用add_header()添加报头。本人更加倾向于第二种,使用方法如下
# 添加报头
req = ur.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0')
四、设置服务器代理
# 设置代理
proxy = ur.ProxyHandler({'http': proxy_add})
opener = ur.build_opener(proxy, ur.HTTPHandler)
ur.install_opener(opener)
五、爬行页面并信息存档
# 读取数据
info = ur.urlopen(req).read()
fh = open(aim_file, "wb")
# 信息转档
fh.write(info)
# 关闭文件
fh.close()
六、源代码:
import urllib.request as ur # 代理服务器的地址
proxy_add = "110.183.238.145:811"
# 获取目标网址
url = "https://www.baidu.com"
# 设置目标文档(路径+文件名【包括后缀】)
aim_file = "E:/workspace/PyCharm/codeSpace/books/python_web_crawler_book/chapter4/demo2/1.html" # 添加报头
req = ur.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0') # 设置代理
proxy = ur.ProxyHandler({'http': proxy_add})
opener = ur.build_opener(proxy, ur.HTTPHandler)
ur.install_opener(opener) # 读取数据
data = ur.urlopen(req).read()
# 文件指向
fh = open(aim_file, "wb")
# 信息转档
fh.write(data)
# 关闭文件
fh.close()
手动爬虫之流程笔记1(python3)的更多相关文章
- 手动爬虫之京东笔记本栏(ptyhon3)
import urllib.request as ur import urllib.error as ue import re # 目标网址 url = 'https://list.jd.com/li ...
- Ubuntu下配置python完成爬虫任务(笔记一)
Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...
- scrapy爬虫框架学习笔记(一)
scrapy爬虫框架学习笔记(一) 1.安装scrapy pip install scrapy 2.新建工程: (1)打开命令行模式 (2)进入要新建工程的目录 (3)运行命令: scrapy sta ...
- 学习笔记:python3,代码。小例子习作(2017)
http://www.cnblogs.com/qq21270/p/7634025.html 学习笔记:python3,一些基本语句(一些基础语法的代码,被挪到这里了) 日期和时间操作 http://b ...
- 学习笔记:python3,代码。小例子习作
http://www.cnblogs.com/qq21270/p/7634025.html 学习笔记:python3,一些基本语句(一些基础语法的代码,被挪到这里了) 日期和时间操作 http://b ...
- python 之爬虫基本流程
python 之爬虫基本流程 一 用户获取网络数据的方式: 方式1:浏览器提交请求--->下载网页代码--->解析成页面 方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据 ...
- python 网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件)
python 网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件) requests是一个Python第三方库,用于向URL地址发起请求 bs4 全名 BeautifulSoup4, ...
- 手动爬虫之淘宝笔记本栏(ptyhon3)
1.这次爬虫用到了之前封装的Url_ProxyHelper类,源代码如下 import urllib.request as ur class Url_ProxyHelper: def __init__ ...
- 手动爬虫之报头及代理封装类(python3)
本人刚刚学习爬虫,见每次都需要添加报头比较繁琐,故将该过程封装为Url_ProxyHelper类,代码如下 import urllib.request as ur class Url_ProxyHel ...
随机推荐
- jQuery改变label/input的值,改变class,改变img的src
jQuery改变label/input的值.改变class,改变img的src jQuery改变label的值: $('#aID').text("New Value"); jQue ...
- mysql sql_mode配置
查看mysql sql_mode SELECT @@GLOBAL.sql_mode; 修改mysql sql_mode: set global sql_mode=''; 修改my.ini: sql_m ...
- Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c#
Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c# 1. 加密算法的参数::算法/模式/填充 1 2. 标准加密api使用流程1 2.1. Md5——16bi ...
- ping: icmp open socket: Operation not permitted 的解决办法
ping: icmp open socket: Operation not permitted 的解决办法:为ping加上suid即可.报错时ping的属性: [root@localhost ~]# ...
- OpenGL数据类型及相应C数据类型
- Form.ShowWithoutActivation 属性
获取一个值,该值指示显示窗口时是否激活它. 命名空间: System.Windows.Forms程序集: System.Windows.Forms(在 System.Windows.Forms.d ...
- hive2.1.1配置
hive2.1.1配置 首先在conf下复制hive-site.xml <property> <name>javax.jdo.option.ConnectionURL</ ...
- Unix系统编程()open,read,write和lseek的综合练习
需求:程序的第一个命令行参数为将要打开的文件名称,余下的参数则指定了文件上执行的输入输出操作.每个表示操作的参数都以一个字母开头,紧跟以相关值(中间无空格分隔). soffet:从文件开始检索到off ...
- Yii2 Api认证和授权(翻译)
Authentication 认证 RESTful Api 是无状态的, 因此这意味着不能使用 sessions && cookies. 因此每一个请求应该带有一些 authentic ...
- 由「Metaspace容量不足触发CMS GC」从而引发的思考
https://mp.weixin.qq.com/s/1VP7l9iuId_ViP1Z_vCA-w 某天早上,毛老师在群里问「cat 上怎么看 gc」. 好好的一个群 看到有 GC 的问题,立马做出小 ...