python爬虫笔记之三要点

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)爬取多个网站后剔除相同内容

这个是后期工作,暂时了解不多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值