爬虫项目知识点总结(一)

此次总结只是为了学习记录本人遇到的问题和知识的回顾,方便复习,无其他作用。
(1)开启redis服务 windows下的redis
redis-server redis.windows.conf
如果开启不成功 。。。报错
creating server tcp listening socket 127.0.0.1:6379: bind No error
需要以下执行

redis-cli.exe
shutdown
exit
redis-server.exe redis.windows.conf

(2) 用scrapy首先设置settings中的

ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 2
#开启
ITEM_PIPELINES = {
    'chinaTrafficNew.pipelines.ChinatrafficnewPipeline': 300,
}

(2)使用redis做缓存

#导库
from scrapy_redis.spiders import RedisCrawlSpider

在settings中配置

#使用了scrapy-redis里的去重组件,不使用scrapy默认的去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
#使用了scrapy-redis里的调度器组件,不使用scrapy默认的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
#本机IP
#REDIS_HOST = "192.168.137.1"
REDIS_HOST = '127.0.0.1'
#允许暂停,redis请求记录不丢失
SCHEDULER_PERSIST = True
#redis端口号
REDIS_PORT = 6379
#开启队列
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'
ITEM_PIPELINES = {
    'scrapy_redis.pipelines.RedisPipeline': 400,
}

(3)运行scrapy的脚本文件

from scrapy.cmdline import execute
execute(["scrapy", "crawl", "TrafficNew"])

(4)将请求放到redis中,和redis设置

start_url = []
start_url.append("http")  #网址
r = redis.StrictRedis(host='127.0.0.1', port=6379)#redis的地址
	r.delete('trafficNewSpider:start_urls')#
for url in start_url:
	r.lpush('trafficNewSpider:start_urls', url)
	result = r.smembers('redisspider:start_urls')
	if result != 0:
		print("加入start_url")
	r.connection_pool.disconnect()


#设置
 redis_key = "trafficNewSpider:start_urls"

(6)定时任务

	from apscheduler.schedulers.background import BackgroundScheduler
    sch = BackgroundScheduler()
    sch.add_job(mysql)  # 不加时间, 会在sch.start()后立即执行
    sch.add_job(runAfter, 'interval', minutes=5)  #每五分钟传一次页面
    sch.start()

(7)得到data数据,url,和当前User-Agent

data = response.body.decode(response.encoding)
url = response.url
User-Agent = response.request.headers['User-Agent']

(8)提取信息

#xpath提取
titles = response.xpath('//title/text()').extract()

#正则提取
import re
pat = ''
re.compile(pat).findall(data)

#BeautifulSoup提取
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
paras = soup.select("div.center > div.article-main > p")
 content = []
 for para in paras:
     if len(para) > 0:
         content.append(para.get_text())
 return "".join(content).strip()#组合成一个 并且去掉首尾空格

(9)知识点总结

分割
str = "作者:璃蝺"
str.split(":",1) #1代表分割成两个    不写1 代表分割成多个

strip()

split()详细用法_____菜鸟教程
strip()详细用法____菜鸟教程
(10) MYSQL的去重
设置主键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值