爬虫第三弹:图灵社区书籍信息爬取
二、爬虫的功能分析
1、通过对"http://www.ituring.com.cn/book?tab=book&sort=new&page="+str(i)主页面进行循环;
2、通过item["url0"] = response.xpath('//div[@class="book-img"]/a/@href').extract()语句获取每个图灵图书子页面网址信息;
3、然后在子页面利用urllib和正则表达式,挖掘出每个数据项信息;
4、挖掘出来的数据通过pipelines文件导入mysql数据库;
5、通过mysql数据库导出xml文件;
6、对xml文件进行手动清洗后另存为规则的csv文件,以备下一步的R语言分析;
整体过程和安居客房地产爬虫类似,这里就不多赘述了;
三、学习总结
在这里只说本案例与前两个爬虫不同而应该注意的地方,因为本爬虫一次性爬取50多主页,1000多个分页信息,所以需要加入防禁设置
1、在setting.py中设置时间延迟:
中生效以下语句:DOWNLOAD_DELAY = 0.5
2、在setting.py中设置robots和cookies都失效:
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
# Disable cookies (enabled by default)
COOKIES_ENABLED = False
3、在setting.py中设置下载中间件
DOWNLOADER_MIDDLEWARES = {
# 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':123,
# 'ituringpjt.middlewares.HTTPPROXY' : 125,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':2,
'ituringpjt.middlewares.USERAGENT':1
}
4、具体 middlewares.py文件设置
# -*- coding: utf-8 -*-
# 导入随机模块
import random
# 导入有关IP池有关的模块
from scrapy.downloadermiddlewares.httpproxyimport HttpProxyMiddleware
# 导入有关用户代理有关的模块
from scrapy.downloadermiddlewares.useragentimport UserAgentMiddleware
'''如果要设置IP代理此请开启
class HTTPPROXY(HttpProxyMiddleware):
# 初始化 注意一定是 ip=''
def __init__(self, ip=''):
self.ip = ip
def process_request(self, request, spider):
item = random.choice(IPPOOL)
try:
print("当前的IP是:"+item["ipaddr"])
request.meta["proxy"] = "http://"+item["ipaddr"]
except Exception as e:
print(e)
pass
#IP池设置
IPPOOL=[
{"ipaddr": "60.13.187.162:63000"},
{"ipaddr": "222.185.137.182:6666"},
{"ipaddr": "58.247.135.174:63000"},
{"ipaddr": "221.5.54.6:808"},
{"ipaddr": "122.114.31.177:808"},
{"ipaddr": "61.135.217.7:80"},
{"ipaddr": "59.56.252.38:63000"},
{"ipaddr": "220.191.103.223:6666"},
{"ipaddr": "113.200.241.202:63000"},
{"ipaddr": "171.221.202.181:63000"},
{"ipaddr": "14.118.255.222:6666"},
{"ipaddr": "14.118.255.138:6666"},
{"ipaddr": "121.231.155.219:6666"},
{"ipaddr": "117.86.12.69:18118"},
{"ipaddr": "117.63.78.4:6666"},
{"ipaddr": "125.120.203.129:6666"},
{"ipaddr": "223.145.228.166:6666"},
{"ipaddr": "110.73.9.160:8123"},
{"ipaddr": "222.42.136.15:63000"},
{"ipaddr": "183.167.217.152:63000"},
]
'''
'''如果要设置用户代理池请开启'''
# 用户代理
class USERAGENT(UserAgentMiddleware):
#初始化 注意一定是 user_agent=''
def __init__(self, user_agent=''):
self.user_agent = user_agent
def process_request(self, request, spider):
item = random.choice(UAPOOL)
try:
print("当前的User-Agent是:"+item)
request.headers.setdefault('User-Agent', item)
except Exception as e:
print(e)
pass
# 设置用户代理池
UAPOOL=[
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5"
]
以上本爬虫精华已记录完毕,下一步会用R语言进行分析该数据。
爬虫第三弹:图灵社区书籍信息爬取相关推荐
- python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- python爬虫公众号_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- python微信爬取教程_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- 爬虫学习日记1-豆瓣top250电影信息爬取
@ 爬虫学习日记1-豆瓣top250电影信息爬去 学习任务:结合requests.re两者的内容爬取https://movie.douban.com/top250里的内容, 要求抓取名次.影片名称.年 ...
- Python爬虫入门教程 94-100 帮粉丝写Python爬虫之【微信读书书籍信息爬取】
X同学发私信说想要微信读书上的书籍清单做测试用,吓我一跳,原以为是要爬取APP呢,刚换了新笔记本难道要配置新的开发环境,结果是爬取一个PC端的网站,虚惊一场. 爬虫百例教程导航链接 : https:/ ...
- Python爬虫--智联招聘职位和公司信息爬取
用scrapy框架进行爬取 目录结构: 1. items.py 文件 事先定义好我们要进行爬取的信息 # -*- coding: utf-8 -*-# Define here the models f ...
- Scrapy中selenium的应用-----并通过京东图书书籍信息爬取项目进行实操!
引言------ 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载(ajax)的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值 ...
- Python爬虫(三)Beautiful Soup 实战,爬取前程无忧网站
Beautiful Soup介绍 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能. Beautiful Soup自动将输入文档转换为Unicode ...
- 20201126时隔一年半更新 python爬虫小项目--飞常准航班信息爬取variflight(下)
时隔一年多,再更新飞常准的信息抓取,看了下其实就是和去年的没有太多变更的地方.打开首页.发现页面变了 入口在哪里了?之前首页有城市和航班信息入口,一开始怀疑是浏览器内存不支持加载一些脚本,更换了其他内 ...
最新文章
- 计算机视觉 | 图像描述与注意力机制
- 干货丨一文带你玩转机器学习和深度学习
- 她取代马斯克成特斯拉新董事长 究竟什么来头?
- 用文件fw读写链表_用FORTRAN95写的sgy文件读写程序
- 按键抖动仿真Testbench(repeat、task、random)的用法
- [小技巧]ASP.NET Core中如何预压缩静态文件
- 毕业了,就忘掉导师吧
- python3.7是什么_Python 3.7 有什么新变化
- iOS 多线程的简单理解(1) 方式 :同步 异步
- 关于javascript中apply()和call()方法
- [转]html导出到excel数据格式不正确解决方法
- 05 jQuery的DOM操作
- python调用shell命令 批量执行python程序
- 微信公众号 菜单 { “errcode“: 47001, “errmsg“: “data format error rid: 61b36b ...“}
- C++ 遍历json文件
- 大白菜pe安装服务器系统安装教程视频教程,大白菜u盘启动盘制作工具安装系统的详细方法...
- flvplayer.swf flv视频播放器使用方法 (转载)
- 如何将微信公众号上的文章下载下来?
- UML用例图-软件需求分析与设计(很详细,很详细,很详细)
- RDS-TMC(Traffic Message Channel)蕴藏的商机不可小视
热门文章
- JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedur
- 计算机程序的思维逻辑 (7) - 如何从乱码中恢复 (下)
- 前端开发者如何构建UCD的中长期前端开发能力与团队
- 【一】1D测量 Measuring——measure_pos()算子
- 最新最全论文合集——ISCA 历年最佳论文汇总
- Android系统设置单双卡
- 电商API分享:获取淘宝商品历史价格api调用示例 参数说明
- 三维地图(功能和E都市的一样)
- 腾讯新产品砸了所有鉴黄师的饭碗
- snort create mysql_Snort入侵检测系统构建