转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7019963.html

一:requests模块介绍

requests是第三方http库,可以十分方便地实现python的网络连接,完美替代了urllib2模块。

二:原理

使用requests实现定向爬虫需要两步:首先使用requests获取目标网页的源代码;然后使用requests与正则表达式从中提取信息。

获取源码有两种方式:

使用requests.get(url).text可以直接获取无反爬虫机制的网页的源码;

但对于有反爬虫机制的网页,上面的简单手段是不能完整获取到网页源码的,只能读取到网页中robot中的内容,提示你该网页禁止爬取。

此时,可以修改http头,然后在requests.get时把头传进去,戴上伪装帽子,即可正常访问目标网页并获取源码了。

首先,我们用浏览器打开目标网页,右键—>审查元素(火狐)、检查(谷歌)

然后在打开的面板中,选择 NetWork 选项卡。

最后,在选项卡下面一行行的网络请求中随便点击一个,打开详情,拖到最下面RequestHeader项的底部,找到User-Agent,复制它。

这个User-Agent就是我们需要的伪装了,我们用这个为爬虫模拟出一个浏览器访问页面的请求,从而绕过网页的反爬虫协议。

#coding:utf8
import requests
#从浏览器中复制过来的伪装头
head={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
#使用伪装头发出请求
html=requests.get("https://www.bilibili.com/",headers=head)
#指定编码格式,避免中文乱码
html.encoding= 'utf8'
#获取网页源码
print html.text

然后,就可以用正则表达式从网页源码提取内容了。

三:实战

#coding:utf8
import requests
import re
#从浏览器中复制过来的伪装头
head={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
#使用伪装头发出请求
html=requests.get("https://git.oschina.net/",headers=head)
#指定编码格式,避免中文乱码
html.encoding= 'utf8'
#获取网页源码
src=html.text
#使用正则表达式提取内容,这里提取网页中的http链接:注意使用 () 提取想要的匹配信息
urls=re.findall('href="(http.*?)"',src)
for url in urls:
print url

结果:

http://www.oschina.net
http://git.mydoc.io
http://weibo.com/mayunOSC
http://www.51idc.com/

Python定向爬虫实战的更多相关文章

  1. 关于Python网络爬虫实战笔记③

    Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...

  2. python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...

  3. 关于Python网络爬虫实战笔记①

    python网络爬虫项目实战笔记①如何下载韩寒的博客文章 python网络爬虫项目实战笔记①如何下载韩寒的博客文章 1. 打开韩寒博客列表页面 http://blog.sina.com.cn/s/ar ...

  4. Python网络爬虫实战(一)快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

  5. python网络爬虫实战之快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

  6. Python网络爬虫实战(三)照片定位与B站弹幕

    之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了. 这篇实战包含两个内容. * 利用爬虫调用Api来解析照片的拍摄位置 * 利用爬虫爬取Bilibili视频中的 ...

  7. Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布

    本文实现一个非常有趣的项目,这个项目是关于胸罩销售数据分析的.是网络爬虫和数据分析的综合应用项目.本项目会从天猫抓取胸罩销售数据,并将这些数据保存到SQLite数据库中,然后对数据进行清洗,最后通过S ...

  8. Python文本爬虫实战

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7019950.html  一:流程 目标:爬取目标网页的图片 1:获取网页源码 2:用Python读取源码 3: ...

  9. 自学Python十 爬虫实战三(美女福利续)

    我又来送福利啦!!!不同于上篇文章,这次我们的爬虫采用了多线程,一直以来被所谓的分布式  多线程  爬虫 给唬的怕怕的.今天就来一发多线程爬虫吧,还能看妹子图,想想就觉得很激动!!! 依然是流程解释: ...

随机推荐

  1. linux下生成https的crt和key证书

    今天在配置kibana权限设置时,kibana要求使用https链接. 于是总结了一下linux下openssl生成 签名的步骤: x509证书一般会用到三类文,key,csr,crt   Key 是 ...

  2. 危机边缘第一季/全集Fringe迅雷下载

    本季Fringe Season 2 第二季(2008)看点:一架从汉堡飞往波士顿航班安全着陆,飞机上的机组成员和乘客却全部死亡.这起离奇案件揭开了一连串奇异.危险事件的序幕. 故事将主要讲述年轻的FB ...

  3. 纸牌屋第一季/全集House of Cards迅雷下载

    纸牌屋 第一季 House of Cards Season 1 (2013) 本季看点:经过数轮激烈角逐,新一届美国总统加勒特·沃克(迈克·吉尔 Michael Gill 饰)诞生,自称水管工的众议院 ...

  4. 自己写的SeekBarPreference,可以实现seekbar滑动监听和设置默认进度和最大进度

    我通过参考android源码,把这个烂尾的类写完了.具体实现了seekbar的数据自动存储,seekbar拖动时触发监听器,可以设置默认的进度和最大进度.先说使用的方式: 1.在xml文件中使用pre ...

  5. Linux Shell 裡一些很少用到卻很有用的指令

    Linux Shell 裡一些很少用到卻很有用的指令 2009年11月30日 13:53:00 yaoyasong 阅读数:414   Linux Shell 裡一些很少用到卻很有用的指令 你是不是已 ...

  6. 学了编译原理能否用 Java 写一个编译器或解释器?

    16 个回答 默认排序​ RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和 ...

  7. 100base-T

    100Base-T是一种以100Mbps速率工作的局域网(LAN)标准,它通常被称为快速以太网标准,并使用两对UTP(非屏蔽双绞线)铜质电缆. 快速以太网 : 与10BASE-T的区别在于网络速率是1 ...

  8. C# Encoding UTF-16 ,C#中的UTF16

    http://www.cnblogs.com/criedshy/archive/2012/08/07/2625358.html 前言 众所周知计算机只能识别二进制数字,如1010,1001.我们屏幕所 ...

  9. 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h

    DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...

  10. linux 比较两个文件夹不同 (diff命令, md5列表)

    比较文件夹diff,可以直接使用diff命令 [root@~]# diff -urNa dir1 dir2 -a Treat all files as text and compare them li ...