python爬虫笔记之三要点
2017-12-12 09:39
295 查看
python爬虫的三个要点:
1,获取种子url。
获取的方式很多,css,xml等,处理的方式有dom,需要全部读取内容,再进行筛选,写起来容易读,适合数据量不大的爬虫,Sax流处理模式,一遍读一遍处理,代码不太易读,但是处理效率高,获取到需要的内容后,后面的内容可以不读了。
2,解析需要的内容
第一,requests,方便的封装包,(1)可以读取cookies,(2)获取url内容,两种方式读取图片如下,(3)提交表单,e.g. 爬虫时提交账号密码,自动登录。
(1)直接读取,requests.get(url)
r=requests.get(url)
image=image.open(ByteIO(r.content))
image.save('img.jpg')
(2)二进制读取
第四,解析html,主要用HTMLParser,需要写一些方法,需要注意的是这个包导入时,有时会报错,需要另外安装markupbase包,这个包用pip安装会说找不到版本,所以需要手动安装,下载Markupbase,解压,找到_markuobase.py,删除下划线,然后放到site-packages。
一下代码学习的七月在线老师的代码,谢谢大神。
from HTMLParser import HTMLParser
class MyParser(HTMLParser):
def handle_decl(self, decl):
HTMLParser.handle_decl(self, decl)
print('decl %s' % decl)
def handle_starttag(self, tag, attrs):
HTMLParser.handle_starttag(self, tag, attrs)
print('<' + tag + '>')
def handle_endtag(self, tag):
HTMLParser.handle_endtag(self, tag)
print('</' + tag + '>')
def handle_data(self, data):
HTMLParser.handle_data(self, data)
print('data %s' % data)
#<br/>
def handle_startendtag(self, tag, attrs):
HTMLParser.handle_startendtag(self, tag, attrs)
def handle_comment(self, data):
HTMLParser.handle_comment(self, data)
print('data %s' % data)
def close(self):
HTMLParser.close(self)
print('Close')
demo = MyParser()
demo.feed(open('test.html').read())
demo.close()
第四,sqlite3,连接数据库,连接本地数据库,比较简单
import sqlite3
conn=sqlite3.connect('name.db')
create_sql=' sql sentence '
conn.execute(create_sql)
3,剔除相同内容
剔除相同内容主要分为在爬虫时剔除相同内容和爬取多个网站后剔除相同内容。
(1)爬取时剔除相同内容
主要有深度优先和广度优先,可以选择栈或队列,各有长短。
(2)爬取多个网站后剔除相同内容
这个是后期工作,暂时了解不多。
1,获取种子url。
获取的方式很多,css,xml等,处理的方式有dom,需要全部读取内容,再进行筛选,写起来容易读,适合数据量不大的爬虫,Sax流处理模式,一遍读一遍处理,代码不太易读,但是处理效率高,获取到需要的内容后,后面的内容可以不读了。
2,解析需要的内容
第一,requests,方便的封装包,(1)可以读取cookies,(2)获取url内容,两种方式读取图片如下,(3)提交表单,e.g. 爬虫时提交账号密码,自动登录。
(1)直接读取,requests.get(url)
r=requests.get(url)
image=image.open(ByteIO(r.content))
image.save('img.jpg')
(2)二进制读取
r=requests.get(url,stream=True) with open('img.jpg','w+') as f: for chunk in r.iter_content(1024): f.write(chunk)
第二,BeautifulSoup,主要针对html,因为html有时候不规范,可以有效获取想要的标签或属性,比如tag,string,comment,css等,其中soup.select()用.tag获取第一个,
而用tag获取所有的。
from bs4 import BeautifulSoup soup=BeautifulSoup(open('h.html'))第三,cookies,用cookies不用反复登录输入密码,一段时间可以免登陆。
import requests cookies='' url='url.com' headers= {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'} r=requests.get(url,cookies=cookies,headers=headers) with open('name.file','w+') as f: f.write(r.content)
第四,解析html,主要用HTMLParser,需要写一些方法,需要注意的是这个包导入时,有时会报错,需要另外安装markupbase包,这个包用pip安装会说找不到版本,所以需要手动安装,下载Markupbase,解压,找到_markuobase.py,删除下划线,然后放到site-packages。
一下代码学习的七月在线老师的代码,谢谢大神。
from HTMLParser import HTMLParser
class MyParser(HTMLParser):
def handle_decl(self, decl):
HTMLParser.handle_decl(self, decl)
print('decl %s' % decl)
def handle_starttag(self, tag, attrs):
HTMLParser.handle_starttag(self, tag, attrs)
print('<' + tag + '>')
def handle_endtag(self, tag):
HTMLParser.handle_endtag(self, tag)
print('</' + tag + '>')
def handle_data(self, data):
HTMLParser.handle_data(self, data)
print('data %s' % data)
#<br/>
def handle_startendtag(self, tag, attrs):
HTMLParser.handle_startendtag(self, tag, attrs)
def handle_comment(self, data):
HTMLParser.handle_comment(self, data)
print('data %s' % data)
def close(self):
HTMLParser.close(self)
print('Close')
demo = MyParser()
demo.feed(open('test.html').read())
demo.close()
第四,sqlite3,连接数据库,连接本地数据库,比较简单
import sqlite3
conn=sqlite3.connect('name.db')
create_sql=' sql sentence '
conn.execute(create_sql)
3,剔除相同内容
剔除相同内容主要分为在爬虫时剔除相同内容和爬取多个网站后剔除相同内容。
(1)爬取时剔除相同内容
主要有深度优先和广度优先,可以选择栈或队列,各有长短。
(2)爬取多个网站后剔除相同内容
这个是后期工作,暂时了解不多。
相关文章推荐
- 【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第3章 爬虫基础知识回顾
- python笔记——爬虫4
- Python爬虫学习笔记——豆瓣登陆(三)
- Python爬虫笔记----爬虫技术入门(1)
- Python爬虫入门笔记:一个简单的爬虫架构
- python爬虫笔记(七):实战(三)股票数据定向爬虫
- Python爬虫学习笔记——自动爬取XX网站,下载种子,封面,番号
- Python3学习笔记2:简易Web爬虫
- (转)Python爬虫学习笔记(2):Python正则表达式指南
- Python爬虫urllib2笔记(三)之使用正则表达式提取百度贴吧网页中的楼主发的图片
- python爬虫之正则表达式学习笔记一
- 学习python爬虫笔记(1)
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
- [python自学笔记]正则表达式和爬虫案例
- Python爬虫urllib2笔记(五)数据传送设置HeadersURLError
- python爬虫笔记<一:POST和GET数据传送>
- python爬虫笔记
- Python爬虫之cookielib笔记
- Python爬虫(入门+进阶)学习笔记 1-7 数据入库之MongoDB(案例二:爬取拉勾)
- python 网络爬虫学习笔记之beautifulsoup