您的位置:首页 > 编程语言 > Python开发

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)二进制读取

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 爬虫