<一>用urllib库访问URL并采集网络数据

-1. 直接采集

发送请求,打开URL,打印传回的数据(html文件)

- 2. 模拟真实浏览器访问

1)发送http头信息(header)

浏览器在访问网站服务器时,会发送http header头信息。因为有些网站可能会限制爬虫的访问,在写爬虫是如果加上合适的header,伪装成一个浏览器就会更容易访问成功。http header包含很多信息,用浏览器开发者工具可以看到访问网站时浏览器发送给服务器的请求信息(开发者工具——Network——Doc),写爬虫的时候根据需要加上适当的信息即可。

方法如下:

先用Request方法先把url放入一个request对象req中,然后用add_header方法给req加入头信息

语法:req.add_header(key1,value1) req.add_header(key2,value2) #一条语句加入一对信息

从浏览器找到的这些成对的头信息,都可以逐个用以上的方法加入

例如最常用的就是的User-Agent信息,它的作用就是表面浏览器的身份。内容包括浏览器名称,版本,系统信息等等。

add_header方法传入的是一个字典,我们需要把User-Agent 传给key,把查到的User-Agent:后面的内容(各种浏览器访问的身份信息等)传给value。

代码实例:

from urllib import request

req=request.Request("https://en.wikipedia.org")

req.add_header("user-agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36")

response=request.urlopen(req)

print(response.read())

2) 发送data表单数据

发送post请求,需给urlopen()传入两个参数,第一个是包含url地址的(Request方法生成的)请求对象req,第二个是编码后的data表单信息。就是要把需要发送的表单信息通过urlencode()方法编码,生成规定格式的数据传送给Request对象。

这种data表单一般是处理需要动态响应的网页时用的,比如需要用户名和密码登录的,或者需要根据搜索条件查询的(火车票查询等等)

具体方法如下:

可以用http协议调试代理工具(如:fiddler,postman)方便的分析http发送的各种请求数据,这些工具可以模拟向服务器发送请求并取得响应的过程,在写程序之前用它调试一下,就可以知道自己的方法能否访问成功。

要更好的理解这部分内容,需要去系统学习一下htttp表单的知识,目前可以先看一下W3C的HTML表单详解教程:http://www.w3school.com.cn/html/html_forms.asp

小结1:urllib.request模块有两个重要的方法:

urlopen()和Request( )

Request()的参数是一个合法的url地址,返回的是一个Request请求对象

(req),这个对象可以用add_header方法加入头信息。

urlopen()的参数可以直接用url地址,也可以用Request对象,如果在发送 访问请求时需要额外加入一些信息(http

header,data表单之类)就用第二种,urlopen()传回的就是一个类文件对象,可以用read( )方法读取网页的HTML文件

<二>用beautifulsoup库解析采集到的数据

python简单爬虫代码-使用Python3.5写简单网络爬虫相关推荐

  1. python urllib.request 爬虫 数据处理-使用Python3.5写简单网络爬虫

    <一>用urllib库访问URL并采集网络数据 -1. 直接采集 发送请求,打开URL,打印传回的数据(html文件) - 2. 模拟真实浏览器访问 1)发送http头信息(header) ...

  2. python网络爬虫程序_Python写的网络爬虫程序(很简单)

    Python写的网络爬虫程序(很简单) 这是我的一位同学传给我的一个小的网页爬虫程序,觉得挺有意思的,和大家分享一下.不过有一点需要注意,要用python2.3,如果用python3.4会有些问题出现 ...

  3. Python学习教程(Python学习路线):Python3之递归函数简单示例

    Python学习教程(Python学习路线):Python3之递归函数简单示例 概述 递归函数即直接或间接调用自身的函数,且递归过程中必须有一个明确的递归结束条件,称为递归出口.递归极其强大一点就是能 ...

  4. 玩转python网络爬虫黄永祥pdf下载_Python网络爬虫从入门到实践pdf

    Python网络爬虫从入门到实践 内容简介 本书将介绍如何使用Python编写网络爬虫程序获取互联网上的大数据.本书包括三部分内容:基础部分.进阶部分和项目实践.基础部分(第1~6章)主要介绍爬虫的三 ...

  5. python网络爬虫与信息提取_北京理工大学_Python网络爬虫与信息提取(一)

    学习 北京理工大学 嵩天 课程笔记 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.BeautifulSoup框架:解 ...

  6. 用c语言写一个网络爬虫

    (同步个人博客 http://sxysxy.org/blogs/28 到csdn 写一个网络爬虫 写一个网络爬虫,来获取一个网站上感兴趣的信息. 最基本的模型 就是图.每个页面看作一个节点,若页面A有 ...

  7. python网络爬虫的方法有几种_Python网络爬虫过程中5种网页去重方法简要介绍

    一般的,我们想抓取一个网站所有的URL,首先通过起始URL,之后通过网络爬虫提取出该网页中所有的URL链接,之后再对提取出来的每个URL进行爬取,提取出各个网页中的新一轮URL,以此类推.整体的感觉就 ...

  8. Python可以这样学(第十季:网络爬虫实战)-董付国-专题视频课程

    Python可以这样学(第十季:网络爬虫实战)-83人已学习 课程介绍         陆续介绍和分享一些网络爬虫方面的案例,Python基础知识可以参考前面的"Python可以这样学&qu ...

  9. Java网络爬虫入门:第01课:网络爬虫原理

    引言 随着互联网的迅速发展,网络资源越来越丰富,信息需求者如何从网络中抽取信息变得至关重要.目前,有效的获取网络数据资源的重要方式,便是网络爬虫技术.简单的理解,比如您对百度贴吧的一个帖子内容特别感兴 ...

最新文章

  1. 运行时常量池在哪里_Java虚拟机详解(二)------运行时内存结构
  2. Java集合源码学习(四)HashMap
  3. 在ubuntu10.4安装snort ACID
  4. DPVS_DPVS配置说明
  5. Java-Web 基础加强之泛型、注解和Servlet3.0新特性
  6. PAT1041 考试座位号 (15 分)
  7. 记一次Task抛异常,调用线程处理而引发的一些随想
  8. 定位导航方案在特殊环境下的适用说明
  9. 十年编程,是人玩技术还是技术玩人?
  10. Android:读取assets目录下文件(二)
  11. MD5加密以及产生唯一的ID
  12. Android修改状态栏的背景颜色
  13. MacbookAir2011用U盘重装10.13.6High Sierra系统
  14. vijos 1004 伊甸园日历游戏 博弈+打表找规律
  15. IOS学习 IOS8的虚化效果
  16. 计算机控制面板属性在哪里打开,win7如何打开系统属性面板|win7打开系统属性面板的方法...
  17. Java面试题及答案2020,安卓java编程软件app
  18. Vue-cli 打包CSS、JS找不到路径问题,解决方案
  19. 机器学习必知的八大神经网络架构
  20. git reset中hard与soft区别

热门文章

  1. 类和对象编程(七):this指针
  2. 团队-团队编程项目作业-开发环境搭建过程
  3. 822C Hacker, pack your bags!
  4. html 常用button事件
  5. HDU 1532 Drainage Ditches(poj1273)【E-K 最大流】
  6. C#里的三种定时器类型
  7. Bailian2682 循环移动【模除】
  8. 欢迎使用CSDN-markdown编辑器【转载】
  9. CCF201712-1 最小差值(100分)
  10. 51Nod-1051 最大子矩阵和【最大子段和+DP】