python简易爬虫实现
目的:爬取昵称
目标网站:糗事百科
依赖的库文件:request、sys、beautifulSoup4、imp、io
Python使用版本:3.4
说明:参考http://cn.python-requests.org/zh_CN/latest/user/quickstart.html
步骤:
一、熟悉request
Request介绍:
Request库是一个python http库,其内部依赖urllib3库。
以下是它的功能特性:
国际化域名和 URL、Keep-Alive & 连接池、带持久 Cookie 的会话、浏览器式的 SSL 认证、基本/摘要式的身份认证、优雅的 key/value Cookie、自动解压、自动内容解码、Unicode 响应体、文件分块上传、连接超时、流下载、支持 .netrc、分块请求、线程安全。
Request API操作:
Request的API对所有HTTP请求类型都是显而易见的,例如对于HTTP的请求类型:
GET、POST、PUT、DELETE、HEAD和OPTIONSS
对应的request API操作为(例):
r = requests.get('https://github.com/timeline.json')
r = requests.post("http://httpbin.org/post")
r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")
本文主要针对request的获取操作来做说明:
以GitHubHub时间线和服务器响应的内容格式为例:
1、响应内容
import requests
r = requests.get('https://github.com/timeline.json')
r.text
Requests可以根据服务器响应的内容自动解码,支持大多数unicode,当然我们也可以以指定的解码格式来解码内容,如r.text前加上r.encoding = 'utf-8'.
2、二进制响应内容和json响应内容
r.content
r.json()
调用该两种方法分别替换上文的r.text,则分别表示字节的方式访问请求的内容,而非文本格式和以json的格式解码内容。
3、原始响应内容
import requests
r = requests.get('https://github.com/timeline.json',stream=True)
r.raw
r.raw.read(10)
#将获取的原始数据写入test.txt文件
with open('test.txt','wb') as fd:
for chunk in r.iter_content(10):
fd.write(chunk)
二、beautifulSoup介绍:
这是Python的一个库,在此主要的作用是从爬取到的网页内容中获取数据,Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
三、爬取昵称
由于本人初次使用Python,所以就做一个最简单的爬虫吧!代码非常简单,就只是获取糗事百科的首页的昵称:
# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
from imp import reload
import requests
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
#解决unicode编码与ascll编码不兼容的问题
#reload(sys)
#sys.setdefaultencoding("utf-8")
############################
class Crawler(object):
def __init__(self):
print("开始爬取数据")
#getSource获取网页源代码
def getSource(self,url):
html = requests.get(url)
#print(str(html.text))可以在此打印,看是否抓取到内容
return html.text #主函数
if __name__=='__main__':
url = 'http://www.qiushibaike.com'
testCrawler = Crawler()
content = testCrawler.getSource(url)
soup = BeautifulSoup(content)
fd = open("crawler.txt", 'w')
for i in soup.find_all('h2'):
print(i.getText())
fd.write(i.getText()+'\n')
fd.close()
python简易爬虫实现的更多相关文章
- python简易爬虫来实现自动图片下载
菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...
- 爬虫系列1:python简易爬虫分析
决定写一个小的爬虫系列,本文是第一篇,讲爬虫的基本原理和简易示例. 1.单个网页的简易爬虫 以下爬虫的主要功能是爬取百度贴吧中某一页面的所有图片.代码由主要有两个函数:其中getHtml()通过页面u ...
- Python简易爬虫
经常需要下载论文,每次都需要去网页上搜索,然后点击下载,实在麻烦,正好最近刚入门Python,心血来潮,想着写一个爬虫 经过一天查阅资料,基本算是完成了,但是还是不足,比如对知网和万方暂时还不行,但是 ...
- Python简易爬虫爬取百度贴吧图片
通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地.(Python版本为3.6.0) 一.获取整个页面数据 def getHtml(url): page=urllib.requ ...
- 【Python】Python简易爬虫爬取百度贴吧图片
通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地.(Python版本为3.6.0) 一.获取整个页面数据 def getHtml(url): page=urllib.requ ...
- python简易爬虫,帮助理解re模块
20161203更新: 1.使用了BS4解析html 2.使用了mysql-connector插入了数据库表 pip install mysql-connector import urllib.req ...
- day17 python re模块 简易爬虫
day17 python 一.re模块 1.re模块的基础方法 查找findall() import re #re.findall(pattern,string,flags ...
- 利用简易爬虫完成一道基础CTF题
利用简易爬虫完成一道基础CTF题 声明:本文主要写给新手,侧重于表现使用爬虫爬取页面并提交数据的大致过程,所以没有对一些东西解释的很详细,比如表单,post,get方法,感兴趣的可以私信或评论给我.如 ...
- 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接
[一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...
随机推荐
- WCF服务最近经常死掉
系统上线后WCF服务最近经常死掉的原因分析总结 前言 最近系统上线完修改完各种bug之后,功能上还算是比较稳定,由于最近用户数的增加,不知为何经常出现无法登录.页面出现错误等异常,后来发现是由于W ...
- JavaScript实例技巧精选(14)—动态变化背景颜色
>>点击这里下载完整html源码<< 这是截图: 网页背景颜色随时间变化,核心代码如下: <SCRIPT LANGUAGE="JavaScript"& ...
- HDU 4630、BOJ 某题
两道离线线段树. 比赛时候没想到.... 扫描数组,i从1到n,线段树维护从1到i每一个约数(1~50000)的出现的最近位置,线段树存储的是约数的最大值 #include<cstdio> ...
- WebService支持多平台上传文件的实现
WebService支持多平台上传文件的实现 要使用网站上传文件,在ASP.NET的范畴,我基本上能想到的有两类,一类是通过HTTP POST请求获得文件信息,另外一类是通过WebService或 ...
- 工作经常使用的SQL整理
工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战 ...
- 关于iTunes随机播放和我所不知道的自己
无意中看到这套题,很有意思,自己做了一下. 规则是这样的:打开你的播放器,我的是iTunes,不管是哪个,总之打开最全的那个播放列表,开启随机播放,按顺序把每首歌名写在下面每道题的后面,比如第一首歌是 ...
- 从uibutton的点击谈谈ios的响应事件
最近在做一个项目,接连遇到两个关于点击事件的问题. 1.点击button不能响应事件的. 2.子view的frame超出了父view的容器大小,也不能响应点击事件. 效果图如右: 1.第一张图中的弹出 ...
- windows下Jdk和Tomcat的安装配置
Jdk全称Java development Kit,Jdk是sun公司提供的免费开源的java语言开发工具包,现在最新版本是8.0,说道jdk的版本,有些人可能会有疑惑,怎么有说jdk1.6,jdk1 ...
- url在线编码和解码
在工作中,经常遇到encode之后的url.想查看里面的某个参数的时候,很不直观.今天在网上搜了一下对url在线编码和解码的网站.对我来说,使用起来很方便.而且这个网站里面,不仅仅有对url的编码和解 ...
- Struts2框架搭建
使用Struts2版本为:struts-2.3.16.3 下载地址:http://struts.apache.org/ 一.向web项目中添加struts2依赖库 commons-fileupload ...