Python定向爬虫实战
转载请注明原文地址: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定向爬虫实战的更多相关文章
- 关于Python网络爬虫实战笔记③
Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...
- python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...
- 关于Python网络爬虫实战笔记①
python网络爬虫项目实战笔记①如何下载韩寒的博客文章 python网络爬虫项目实战笔记①如何下载韩寒的博客文章 1. 打开韩寒博客列表页面 http://blog.sina.com.cn/s/ar ...
- Python网络爬虫实战(一)快速入门
本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...
- python网络爬虫实战之快速入门
本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...
- Python网络爬虫实战(三)照片定位与B站弹幕
之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了. 这篇实战包含两个内容. * 利用爬虫调用Api来解析照片的拍摄位置 * 利用爬虫爬取Bilibili视频中的 ...
- Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布
本文实现一个非常有趣的项目,这个项目是关于胸罩销售数据分析的.是网络爬虫和数据分析的综合应用项目.本项目会从天猫抓取胸罩销售数据,并将这些数据保存到SQLite数据库中,然后对数据进行清洗,最后通过S ...
- Python文本爬虫实战
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7019950.html 一:流程 目标:爬取目标网页的图片 1:获取网页源码 2:用Python读取源码 3: ...
- 自学Python十 爬虫实战三(美女福利续)
我又来送福利啦!!!不同于上篇文章,这次我们的爬虫采用了多线程,一直以来被所谓的分布式 多线程 爬虫 给唬的怕怕的.今天就来一发多线程爬虫吧,还能看妹子图,想想就觉得很激动!!! 依然是流程解释: ...
随机推荐
- itunes connect 改版后无法访问的处理办法
很悲剧,今天要提交版本,结果itunes connect改版,然后进不去了, 限于无限loading- 是网速慢吗?再等等,先吃个饭,待会再来看- ------------------------ ...
- Android scrollbar的设置
insideOverlay:默认值,表示在padding区域内并且覆盖在view上 insideInset:表示在padding区域内并且插入在view后面 outsideOverlay:表示在pad ...
- 常用工具类系列之DateUtil
Date.long.Calendar之间的相互转换 //当前时间 Date date = DateUtil.date(); //当前时间 Date date2 = DateUtil.date(Cale ...
- 使用ASP.NET+Jquery DataTables的服务器分页
(1)先建立表,看看表结构 (2)建立存储过程 DataTables是服务器分页,GetWxUsers存储过程使用了4个参数 (1) @start--表示当前第几页,例如第3页,start是从0开始 ...
- @Dubbo概述
Dubbo是什么 Dubbo是一个开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 有三个核心部分包括: 远程通讯:提供对多种基于长连接的NIO框架抽象封 ...
- Chart:ECharts
ylbtech-Chart:ECharts ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome, ...
- [leetcode]Minimum Path Sum @ Python
原题地址:https://oj.leetcode.com/problems/minimum-path-sum/ 题意: Given a m x n grid filled with non-negat ...
- Android -- 混淆
混淆本质 把原来有具体含义的类名,变量名,方法名,修改成让人看不懂的名字,例如方法名getxx混淆为方法名a. Android Studio中的混淆 Android工程目录下有个文件,proguard ...
- __attribute__中constructor和destructor[总结]
1.前言 最近看到一份代码,看到一个函数前面用__attribute__((destructor))修饰,当时感觉有点怪怪的,搜了整个程序,也没发现哪个地方调用这个函数.于是从字面意思猜想,该函数会在 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十三)kafka+spark streaming打包好的程序提交时提示虚拟内存不足(Container is running beyond virtual memory limits. Current usage: 119.5 MB of 1 GB physical memory used; 2.2 GB of 2.1 G)
异常问题:Container is running beyond virtual memory limits. Current usage: 119.5 MB of 1 GB physical mem ...