使用BeautifulSoup快速写爬虫

BeautifulSoup简称bs,是一个用来分析提取网页有用信息的工具,我个人认为正则表达式对于网页分析提取信息无所不能,但如果每个爬虫都用正则来写太费力,bs相对来说比正则方便很多,对于编写规范的网页来说bs确实很好用,对有一些编写不规范的网页,bs就很容易出错,而正则对于编写不规范的网站就显得强大很多,正则和bs各有利弊,不过大多情况下,网站的编写都还是很规范的,所以还是用bs比较多。

关于网页分析的工具不止bs,Scrapy框架用的是xpath,其实完全可以用bs来替代xpath,这类工具就看个人喜好了。

很简单的一个爬虫,用bs实现起来方便不少。

import urllib2
from bs4 import BeautifulSoup

import socket

from time import time

 

start = time()

baseurl = "http://jandan.net/ooxx/page-%s"

list = []

def user_agent(url):

    req_header = {‘User-Agent‘:‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}

    req_timeout = 20

    try:

        req = urllib2.Request(url,None,req_header)

        page = urllib2.urlopen(req,None,req_timeout)

        html = page

    except urllib2.URLError as e:

        print e.message

    except socket.timeout as e:

        user_agent(url)

    return html

 

def page_loop(pageid):

    url = baseurl%pageid

    print url

    page = user_agent(url)

    soup = BeautifulSoup(page)

    total_img = 0

    img = soup.find_all([‘img‘])

    for myimg in img:

        jpgUrl = myimg.get(‘src‘)

        total_img +=1

        print jpgUrl

        #urllib.urlretrieve(jpgUrl,‘D:/Python/picture‘+‘/‘+jpgUrl[-11:])

        data = urllib2.urlopen(jpgUrl).read()

        with open(‘D:/Python/picture‘+‘/‘+jpgUrl[-11:],‘wb‘)as code:

            code.write(data)

    print total_img

    

 

page_start = 1000

page_stop = 1005

 

if __name__ == ‘__main__‘:

    for pageid in range(page_start,page_stop):

        page_loop(pageid)

 

    print ‘Yong shi : %s‘%(time()-start)

时间: 2024-08-26 14:34:02

使用BeautifulSoup快速写爬虫的相关文章

用聚合数据API快速写出小程序(苏州实时公交)

利用聚合数据API快速写出小程序,过程简单. 1.申请小程序账号 2.进入开发 3.调用API.比如"苏州实时公交"小程序,选择的是苏州实时公交API. 苏州实时公交API文档:https://www.juhe.cn/docs/api/id/31 如下,是"苏州实时公交"小程序调用代码:  var url = "https://apis.juhe.cn/szbusline/bus";    //为了您的密钥安全,建议使用服务端代码中转请求,事例代

根据用户需求快速写原创文章的技巧

每天有时间就在QQ群里看看大家聊什么问题,发现这几天在讨论如何写原创文章?原创文章好还是伪原创好?伪原创怎么写?等等这些问题.今天我总结了一下,根据我的经验给大家说一下如何根据用户需求快速写原创文章. 案例网站:太原雅辉装修公司 太原雅辉装修网的文章全部是高度伪原创,加上可以匹配的图片,写一篇文章需要半个小时左右. 文章实例: <a href="http://www.0351zhuangxiu.com/112.html">40平米小户型装修效果图</a> 为什么

如何快速写出一个陌生人推荐系统

如何快速写出一个陌生人推荐系统 在社交游戏中,除了和好友互动,经常还会设计陌生人互动的游戏环节.下面两张图分别是QQ水浒和全民农场的陌生人推荐界面. QQ水浒陌生人界面 全民农场陌生人界面 那么,陌生人推荐系统一般是怎么做的呢?下面以全民农场的陌生人推荐系统为例来阐述如何快速构建一个陌生人推荐系统,由于采用了boost::multi_index库,整个推荐系统代码在400行左右,非常简洁. 首先,我们简单介绍一下全民农场的陌生人推荐系统规则: 1. 等级相近 2. 城市相近 3. 性别相反 4.

快速写一个babel插件

es6/7/8的出现,给我们带来了很多方便,但是浏览器并不怎么支持,目前chrome应该是支持率最高的,所以为了兼容我们只能把代码转成es5,这应该算是我们最初使用babel的一个缘由,随着业务的开发,我们会有很多自己定制化的需求,单纯的bebel并不能解决我们所有的问题,所以babel插件应用而来,本文将会采用较为通俗的语言来描述如何快速写一个babel插件. 一.babel的作用 babel的作用其实就是一个转换器,把我们的代码转成浏览器可以运行的代码,类似于加工厂的概念.解析代码都是一个文

python利用beautifulsoup多页面爬虫

利用了beautifulsoup进行爬虫,解析网址分页面爬虫并存入文本文档: 结果: 源码: from bs4 import BeautifulSoup from urllib.request import urlopen with open("热门标题.txt","a",encoding="utf-8") as f: for i in range(2): url = "http://www.ltaaa.com/wtfy-{}"

[转] Mac下 快速写博客的软件 MarsEdit

原文地址: ? ?http://www.cnblogs.com/zhongxia/p/5370526.html 熟悉Windows live writer的朋友一定都知道它是书写博客的利器,但既然现在选择了拿Mac来装逼.那么就至少要装的像一些?满屏都是虚拟器的干活的不要!所谓条条大路都通一个叫罗马的城,我们同样可以使用--Marsedit这个好工具在Mac上信口雌黄的.随手搜索了一下,论坛中虽有人介绍过该软件但都不甚详细.尤其是在设定&链接个人博客的部分语焉不详,孰不知该环节却是最重要的.?

如何快速写一个分布式实时应用程序

在开源搜索引擎Iveely的0.8.0中,我们有提到Iveely Computing实时计算平台,因为Iveely搜索引擎也是基于这个平台做的开发,因此,我们可以利用这个平台,轻松构建分布式实时应用程序.在开始构建程序之前,请按照这里部署Iveely Computing,确定部署无误之后,我们可以从下面代码开始学习. 不管是hadoop还是storm,都会在入门的时候,有一个WordCount示例,Iveely Computing也不例外. 首先,WordCount代码如下: /* * To c

思路:如何快速写一个全面的数据库 增备+全备+删除,自动化的脚本?

1.数据作用: 数据对我们来说是非常非常的重要,如果你是管理数据员.运维人员的,数据丢失了,找不回来,也就意味着,你的职业生涯就结束了,为了避免数据丢失,我们也做了很多的维护.备份,比如做主从复制.做全备.增备等等.这个可以参考我的另一篇文章Mysql主从复制. 我这里就不多说,今天我们要怎么写一个比较好的数据备份自动化脚本,让我们更好的管理数据库. 2.mysql备份脚本思路 首先要有一个思路,我的要求是每个的周一到周五做增量备份,周六做全备,对前两天的增备的日志删除,对两个星期前的全备也进行

SEO优化文章写作技巧:如何快速写出高排名高质量内容

在搜索的有关seo优化相关内容里面,基本上都说到,原创优质内容.优质外链.优质友情链接.优质的内链这几个方面,所以在做网站优化的时候我都是尽量做原创内容,每天绞尽脑汁的想要写什么主题,但是最后还是没有好的排名,甚至收录都不知道好,但是通过几个网站的实践以后,再加上不停的在网上阅读文章,我发现了问题所在. 1.新网站权重低 2.原创内容并不优质 新网站权重本身就低,所以想要有好的排名不是一朝一夕就可以做到的,需要坚持,坚持更新原创优质内容,其次是可以选择优质老域名,可以让我们的网站收录和权重加快提