【转载】Python2爬虫之爬取某一路径的所有html文件

 1 # -*- coding: UTF-8 -*-
 2 import re
 3 import urllib2
 4
 5 from collections import deque
 6
 7 # 保存文件的后缀
 8 SUFFIX=‘.html‘
 9 # 提取文章标题的正则表达式
10 REX_TITLE=r‘<title>(.*?)</title>‘
11 # 提取所需链接的正则表达式
12 REX_URL=r‘/jdbc/(.+?).html‘
13 # 种子url,从这个url开始爬取
14 BASE_URL=‘http://www.yiibai.com/jdbc/‘
15
16
17 # 将获取到的文本保存为html文件
18 def saveHtml(file_name,file_content):
19 #    注意windows文件命名的禁用符,比如 /
20     with open(file_name.replace(‘/‘, ‘_‘)+SUFFIX,"wb") as f:
21 #   写文件用bytes而不是str,所以要转码
22         f.write(file_content)
23 #   获取文章标题
24 def getTitle(file_content):
25     linkre=re.search(REX_TITLE,file_content)
26     if(linkre):
27         print (‘获取文章主题:‘+linkre.group(1))
28         return linkre.group(1)
29
30 #   爬虫用到的两个数据结构,队列和集合
31 queue=deque()
32 visited=set()
33 #   初始化种子链接
34 queue.append(BASE_URL)
35 count=0
36
37 while queue:
38     url=queue.popleft()  # 队首元素出队
39     visited |= {url}  # 标记为已访问
40
41     print(‘已经抓取: ‘+ str(count)+‘   正在抓取 <---  ‘+url)
42     count += 1
43     urlop=urllib2.urlopen(url)
44 # 只处理html链接
45     if ‘html‘ not in urlop.headers.getheader(‘Content-Type‘):
46         continue
47 # 避免程序异常中止
48     try:
49         data=urlop.read()
50         title=getTitle(data).decode(‘utf-8‘);
51     # 保存文件
52         saveHtml(title,data)
53     except:
54         continue
55
56 # 正则表达式提取页面中所有链接, 并判断是否已经访问过, 然后加入待爬队列
57     linkre = re.compile(REX_URL)
58     for sub_link in linkre.findall(data):
59         sub_url=BASE_URL+sub_link+SUFFIX;
60 # 已经访问过,不再处理
61         if sub_url in visited:
62             pass
63         else:
64         # 设置已访问
65             visited |= {sub_url}
66         # 加入队列
67             queue.append(sub_url)
68             print(‘join the quene--->  ‘+sub_url)

http://blog.csdn.net/wangshihui512/article/details/51100605#python

22 和 49行 与原文有所出处 如果添加了反而无法执行 可能和编码有关系

时间: 2024-10-21 07:30:26

【转载】Python2爬虫之爬取某一路径的所有html文件的相关文章

[Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

一. 文章介绍 前一篇文章"[python爬虫] Selenium爬取新浪微博内容及用户信息"简单讲述了如何爬取新浪微博手机端用户信息和微博信息. 用户信息:包括用户ID.用户名.微博数.粉丝数.关注数等. 微博信息:包括转发或原创.点赞数.转发数.评论数.发布时间.微博内容等. 它主要通过从文本txt中读取用户id,通过"URL+用户ID" 访问个人网站,如柳岩: http://weibo.cn/guangxianliuya 因为手机端数据相对精简简单,所以采用输

用JAVA制作一个爬取商品信息的爬虫(爬取大众点评)

很多企业要求利用爬虫去爬取商品信息,一般的开发模型如下: for i=1;i<=最大页号;i++ 列表页面url=商品列表页面url+?page=i(页号) 列表页面=爬取(列表页面url) 商品链接列表=抽取商品链接(列表页面)  for 链接 in 商品链接列表: 商品页面=爬取(链接) 抽取(商品页面); 这样的模型看似简单,但是有一下几个问题: 1)爬虫没有线程池支持. 2)没有断点机制. 3)没有爬取状态存储,爬取商品网站经常会出现服务器拒绝链接(反问次数过多),导致一旦出现 拒绝链接

第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号

第三百三十节,web爬虫讲解2-urllib库爬虫-实战爬取搜狗微信公众号 封装模块 #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib from urllib import request import json import random import re import urllib.error def hq_html(hq_url): """ hq_html()封装的爬虫函数,自动启用了用户代理和ip

scrapy-redis实现爬虫分布式爬取分析与实现

一 scrapy-redis实现分布式爬取分析 所谓的scrapy-redis实际上就是scrapy+redis其中对redis的操作采用redis-py客户端.这里的redis的作用以及在scrapy-redis的方向我在自己fork的repository(链接:)已经做了翻译(README.rst). 在前面一篇文章中我已经借助两篇相关文章分析了使用redis实现爬虫分布式的中心.归结起来就是:所有爬虫获取到的url(request)都放到一个redis queue中,并且所有爬虫都从单个r

第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

第三百三十四节,web爬虫讲解2-Scrapy框架爬虫-Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻标题和rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有

使用htmlparse爬虫技术爬取电影网页的全部下载链接

昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚然,我们的重点在于如何灵活运用我们已学的技术,这就需要我们不断的练习,不停的思索和深入发掘,在了解了精髓和意义之后运用到实践中才是技术的最高境界. 今天呢,本着昨天的兴趣,想来爬一爬电影资源,中途为了找一个好用趁手的工具,也是费了不少心思,早上半天基本上都在学习和找资料的过程中度过,下午开始才进入状

[Python爬虫] Selenium爬取新浪微博移动端热点话题及评论 (下)

这篇文章主要讲述了使用python+selenium爬取新浪微博的热点话题和评论信息.其中使用该爬虫的缺点是效率极低,傻瓜式的爬虫,不能并行执行等,但是它的优点是采用分析DOM树结构分析网页源码并进行信息爬取,同时它可以通过浏览器进行爬取中间过程的演示及验证码的输入.这篇文章对爬虫的详细过程就不再论述了,主要是提供可运行的代码和运行截图即可.希望文章对你有所帮助吧~ 参考文章 [python爬虫] Selenium爬取新浪微博内容及用户信息 [Python爬虫] Selenium爬取新浪微博客户

第一个nodejs爬虫:爬取豆瓣电影图片

第一个nodejs爬虫:爬取豆瓣电影图片存入本地: 首先在命令行下 npm install request cheerio express -save; 代码: var http = require('https'); //使用https模块 var fs = require('fs');//文件读写 var cheerio = require('cheerio');//jquery写法获取所得页面dom元素 var request = require('request');//发送reques

Python爬虫入门 | 爬取豆瓣电影信息

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~好啦,正式开始我们的第二节课<爬取豆瓣电影信息>吧!啦啦哩啦啦,都看黑板~1. 爬虫原理1.1 爬虫基本原理听了那么多的爬虫,到底什么是爬虫?爬虫又是如何工作的呢?我们先从"爬虫原理"说起.爬虫又称为网页蜘蛛,是一种程序或脚本.但重点在于:它能够按照一定的规则,自动