爬虫第三弹:图灵社区书籍信息爬取

爬虫第三弹:图灵社区书籍信息爬取
一、目的:将图灵社区所有书籍的网址、书籍名称,作者,译者,阅读数,标签,出版日期,定价,页数,印刷方式,出版状态全部爬取下来存入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.httpproxy   import HttpProxyMiddleware
# 导入有关用户代理有关的模块
from scrapy.downloadermiddlewares.useragent   import 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语言进行分析该数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值