码迷,mamicode.com
首页 > 编程语言 > 详细

python爬虫抓取数据

时间:2016-10-04 18:34:49      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:


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爬虫抓取数据

标签:

原文地址:http://www.cnblogs.com/lqcdsns/p/5930813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!