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

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

阅读更多
个人分类: 爬虫
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭