爬虫第三弹:图灵社区书籍信息爬取
一、目的:将图灵社区所有书籍的网址、书籍名称,作者,译者,阅读数,标签,出版日期,定价,页数,印刷方式,出版状态全部爬取下来存入mysql数据库,并导出xml格式,最后转化为csv格式。并对数据通过R语言分析,通过对标签和阅读数,出版日期的联合分析,分析现在计算机不同知识板块的热度信息。
二、爬虫的功能分析
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语言进行分析该数据。

爬虫第三弹:图灵社区书籍信息爬取相关推荐

  1. python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  2. python爬虫公众号_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  3. python微信爬取教程_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  4. 爬虫学习日记1-豆瓣top250电影信息爬取

    @ 爬虫学习日记1-豆瓣top250电影信息爬去 学习任务:结合requests.re两者的内容爬取https://movie.douban.com/top250里的内容, 要求抓取名次.影片名称.年 ...

  5. Python爬虫入门教程 94-100 帮粉丝写Python爬虫之【微信读书书籍信息爬取】

    X同学发私信说想要微信读书上的书籍清单做测试用,吓我一跳,原以为是要爬取APP呢,刚换了新笔记本难道要配置新的开发环境,结果是爬取一个PC端的网站,虚惊一场. 爬虫百例教程导航链接 : https:/ ...

  6. Python爬虫--智联招聘职位和公司信息爬取

    用scrapy框架进行爬取 目录结构: 1. items.py 文件 事先定义好我们要进行爬取的信息 # -*- coding: utf-8 -*-# Define here the models f ...

  7. Scrapy中selenium的应用-----并通过京东图书书籍信息爬取项目进行实操!

    引言------ 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载(ajax)的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值 ...

  8. Python爬虫(三)Beautiful Soup 实战,爬取前程无忧网站

    Beautiful Soup介绍 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能. Beautiful Soup自动将输入文档转换为Unicode ...

  9. 20201126时隔一年半更新 python爬虫小项目--飞常准航班信息爬取variflight(下)

    时隔一年多,再更新飞常准的信息抓取,看了下其实就是和去年的没有太多变更的地方.打开首页.发现页面变了 入口在哪里了?之前首页有城市和航班信息入口,一开始怀疑是浏览器内存不支持加载一些脚本,更换了其他内 ...

最新文章

  1. 计算机视觉 | 图像描述与注意力机制
  2. 干货丨一文带你玩转机器学习和深度学习
  3. 她取代马斯克成特斯拉新董事长 究竟什么来头?
  4. 用文件fw读写链表_用FORTRAN95写的sgy文件读写程序
  5. 按键抖动仿真Testbench(repeat、task、random)的用法
  6. [小技巧]ASP.NET Core中如何预压缩静态文件
  7. 毕业了,就忘掉导师吧
  8. python3.7是什么_Python 3.7 有什么新变化
  9. iOS 多线程的简单理解(1) 方式 :同步 异步
  10. 关于javascript中apply()和call()方法
  11. [转]html导出到excel数据格式不正确解决方法
  12. 05 jQuery的DOM操作
  13. python调用shell命令 批量执行python程序
  14. 微信公众号 菜单 { “errcode“: 47001, “errmsg“: “data format error rid: 61b36b ...“}
  15. C++ 遍历json文件
  16. 大白菜pe安装服务器系统安装教程视频教程,大白菜u盘启动盘制作工具安装系统的详细方法...
  17. flvplayer.swf flv视频播放器使用方法 (转载)
  18. 如何将微信公众号上的文章下载下来?
  19. UML用例图-软件需求分析与设计(很详细,很详细,很详细)
  20. RDS-TMC(Traffic Message Channel)蕴藏的商机不可小视

热门文章

  1. JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedur
  2. 计算机程序的思维逻辑 (7) - 如何从乱码中恢复 (下)
  3. 前端开发者如何构建UCD的中长期前端开发能力与团队
  4. 【一】1D测量 Measuring——measure_pos()算子
  5. 最新最全论文合集——ISCA 历年最佳论文汇总
  6. Android系统设置单双卡
  7. 电商API分享:获取淘宝商品历史价格api调用示例 参数说明
  8. 三维地图(功能和E都市的一样)
  9. 腾讯新产品砸了所有鉴黄师的饭碗
  10. snort create mysql_Snort入侵检测系统构建