URL管理器实现方式:
1. 内存
python内存
待爬取URL集合:set()
已爬取URL集合:set()

2. 关系数据库
MySQL
urls(url, is_crawled)

3. 缓存数据库(高性能,大公司存储)
redis
待爬取URL集合:set
已爬取URL集合:set

网页下载器
urllib2 python官方基础模块
requests 第三方包更强大

import urllib2

urllib2下载网页方法一:
###########################
#直接请求
response = urllib2.urlopen('http://www.baidu.com')

#获取状态码,如果是200表示获取成功
print response.getcode()

#读取内容
cont = response.read()

############################

urllib2下载网页方法2:
添加data、http header

############################
import urllib2

# 创建Request对象
request = urllib2.Request(url)

# 添加数据
request.add_data('a', '1')
# 添加http的header
request.add_header('User-Agent', 'Mozilla/5.0')

# 发送请求获取结果
response = urllib2.urlopen(request)
############################

urllib2下载网页方法3:
添加特殊情景的处理器
HTTPCookieProcessor
ProxyHandler
HTTPSHandler
HTTPRedirectHandler

urllib2下载网页的三种方法:

网页解析器
从网页中提取有价值数据的工具
1. 正则表达式 (复杂,模糊匹配)
1. html.parser
2. Beautiful Soup (第三方插件,强大)
3. lxml

Beautiful Soup
Python第三方库,用于从HTML或XML中提取数据
官网:https://www.crummy.com/software/BeautifulSoup/

安装Beautiful Soup

Beautiful Soup语法
1. 根据Html网页,创建BeautifulSoup对象
2. 搜索节点 find_all、find(可以按节点名称、节点属性值、节点文字进行搜索)
3. 然后就可以访问节点的名称、属性、文字

# 创建BeautifulSoup对象
from bs4 import BeautifulSoup

# 根据HTML网页字符串创建BeautifulSoup对象
soup = BeautifulSoup(
html_doc, # HTML文档字符串
'html.parser' #HTML解析器
from_encoding='utf8' #HTML文档的编码
)

# 搜索节点(find_all, find)
find_all(name, attrs, string)

# 查找所有标签为a的节点
soup.find_all('a')

# 查找所有标签为a,链接符合/view/123.htm形式的节点
soup.find_all('a', href='/view/123.htm')

# <a href='123.htm' class='abc'>Python</a>

# 查找所有标签为div,class为abc,文字为Python的节点
soup.find_all('div', class_='abc', string='Python')

访问节点的信息:
# 得到节点:<a href='1.html'>Python</a>

# 获取查找到的节点的标签名称
node.name

# 获取查找到的a节点的href属性
node['href']

# 获取查找到的a节点的链接文字
node.get_text()

python爬虫抓取数据的更多相关文章

  1. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  2. python 爬虫抓取心得

    quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...

  3. Python爬虫----抓取豆瓣电影Top250

    有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...

  4. 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api

    TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...

  5. python爬虫抓取哈尔滨天气信息(静态爬虫)

    python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip i ...

  6. python 爬虫抓取 MOOC 中国课程的讨论区内容

    一:selenium 库 selenium 每次模拟浏览器打开页面,xpath 匹配需要抓取的内容.可以,但是特别慢,相当慢.作为一个对技术有追求的爬虫菜鸡,狂补了一些爬虫知识.甚至看了 scrapy ...

  7. Node.js爬虫抓取数据 -- HTML 实体编码处理办法

    cheerio DOM化并解析的时候 1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现 2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时, ...

  8. Java 实现 HttpClients+jsoup,Jsoup,htmlunit,Headless Chrome 爬虫抓取数据

    最近整理一下手头上搞过的一些爬虫,有HttpClients+jsoup,Jsoup,htmlunit,HeadlessChrome 一,HttpClients+jsoup,这是第一代比较low,很快就 ...

  9. Python 爬虫: 抓取花瓣网图片

    接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...

随机推荐

  1. ORA-01439: column to be modified must be empty to change datatype

    修改数据库字段类型,但是由于数据表已经存在数据,无法修改: 显示错误:  写道 ORA-01439: column to be modified must be empty to change dat ...

  2. 在将 varchar 值 '1,2,3,4,5,6,7,8' 转换成数据类型 int 时失败。

    alter PROCEDURE PrTradingDelete ) AS BEGIN WHERE id in(@id) END GO 执行上面这个存储过程会异常.提示 :在将 varchar 值 '1 ...

  3. setAttribute()和getAttibute(),getParameter()

    request.setAttribute("key",value)方法给主键设置一个值, request.getAttribute("key")方法从上述设置的 ...

  4. nginx 的基础配置[转]

    nginx 的基础配置 分类: 工具软件2013-11-13 23:26 11人阅读 评论(0) 收藏 举报   目录(?)[-] 管理配置文件 全局配置 虚拟机server配置 location配置 ...

  5. LeetCode(一)

    数据流的中位数 class MedianFinder { private Queue<Integer> maxHeap = new PriorityQueue(new Comparator ...

  6. [Python] 关于64位机的numpy安装问题

    最近刚换成64位的系统,重新安装了win10,VS也从原来的2010变为了现在的2013. 利用原来32位电脑硬盘里的python2.7安装包安装,然后打算安装numpy. 上来碰到问题:在windo ...

  7. Excel表格常用的函数,留着备用

    1. vlookup(lookup_value, table_array, col_index_num, boolean) -- 查找匹配函数 lookup_value: 你要去匹配的值 table_ ...

  8. Sql Server 复制表

    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,fiel ...

  9. (Python)序列

    本节将学习一些循环序列的方法已经序列的大小比较规则 1.循环序列的方法 如果我们想同时循环打印一个列表的index和value,我们可以用enumerate(list) 函数 >>> ...

  10. java8的接口新特性(可以有方法体的接口)(转)

    以前Java的接口中定义的方法不可以有方法体,这样试用起来,有时候听不方便的,当有多个类实现了想同的接口,接口中某一些方法的实现体可能都是一样的时候,这样无疑浪费了很多时间,在写重复的代码(或者说co ...