摘要:使用工具一使用创建项目过程略二安装框架三创建项目创建爬虫项目创建爬虫,先进入爬虫项目目录创建完成后项目目录如下目录下的的就是我们的爬虫文件四打开编写爬虫的代码进入需要爬去的书的目录,找到开始设置鬼吹灯图书目录在创建项目的时候,筛选的地址为打
使用工具,ubuntu,python,pycharm
一、使用pycharm创建项目:过程略
二、安装scrapy框架
pip install Scrapy
三、创建scrapy项目:
1.创建爬虫项目
scrapy startproject qidian
2.创建爬虫,先进入爬虫项目目录
cd qidian/ scrapy genspider book book.qidian.com
创建完成后项目目录如下
目录下的的book.py就是我们的爬虫文件
四、打开book.py编写爬虫的代码
1.进入需要爬去的书的目录,找到开始url 设置start_url:
#鬼吹灯图书目录 start_urls = ["https://book.qidian.com/info/53269#Catalog"]
2、在创建项目的时候,筛选的url地址为:
allowed_domains = ["book.qidian.com"]
打开图书章节后发现章节的url如下: # https://read.qidian.com/chapter/PNjTiyCikMo1/FzxWdm35gIE1 所以需要将read.qidian.com 加入allowed_domains 中,
allowed_domains = ["book.qidian.com", "read.qidian.com"]
剩下的就是通过xpath 获取抓取到的内容,提取我们需要的内容 完整代码如下
# -*- coding: utf-8 -*- import scrapy import logging logger = logging.getLogger(__name__) class BookSpider(scrapy.Spider): name = "book" allowed_domains = ["book.qidian.com", "read.qidian.com"] start_urls = ["https://book.qidian.com/info/53269#Catalog"] def parse(self, response): # 获取章节列表 li_list = response.xpath("//div[@class="volume"][2]/ul/li") # 列表循环取出章节名称和章节对应的url for li in li_list: item = {} # 章节名称 item["chapter_name"] = li.xpath("./a/text()").extract_first() # 章节url item["chapter_url"] = li.xpath("./a/@href").extract_first() # 获取到的url //read.qidian.com/chapter/PNjTiyCikMo1/TpiSLsyH5Hc1 # 需要重新构造 item["chapter_url"] = "https:" + item["chapter_url"] # 循环抓取每个章节的内容 if item["chapter_url"] is not None: # meta:传递item数据 yield scrapy.Request(item["chapter_url"], callback=self.parse_chapter, meta={"item": item}) def parse_chapter(self, response): item = response.meta["item"] # 获取文章内容 item["chapter_content"] = response.xpath("//div[@class="read-content j_readContent"]/p/text()").extract() yield item
五、将爬去数据保存到mongodb中
1.修改setting文件 找到并打开注释:
ITEM_PIPELINES = { "qidain.pipelines.QidainPipeline": 300, }
2.添加monggodb相关配置
# 主机地址 MONGODB_HOST = "127.0.0.1" # 端口 MONGODB_PORT = 27017 # 需要保存的数据哭名字 MONGODB_DBNAME = "qidian" # 保存的文件名 MONGODB_DOCNAME = "dmbj"
3.在pipelines.py文件中保存数据,最终文件内容如下
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don"t forget to add your pipeline to the ITEM_PIPELINES setting # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html from scrapy.conf import settings import pymongo class QidainPipeline(object): def __init__(self): """在__init__中配置mongodb""" host = settings["MONGODB_HOST"] port = settings["MONGODB_PORT"] db_name = settings["MONGODB_DBNAME"] client = pymongo.MongoClient(host=host, port=port) db = client[db_name] self.post = db[settings["MONGODB_DOCNAME"]] def process_item(self, item, spider): self.post.insert(item) return item
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44159.html
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:今天为大家整理了个爬虫项目。地址新浪微博爬虫主要爬取新浪微博用户的个人信息微博信息粉丝和关注。代码获取新浪微博进行登录,可通过多账号登录来防止新浪的反扒。涵盖链家爬虫一文的全部代码,包括链家模拟登录代码。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天为大家整...
摘要:解析的方法,每个初始完成下载后将被调用,调用的时候传入从每一个传回的对象来作为唯一参数,主要作用如下负责解析返回的网页数据,提取结构化数据生成生成需要下一页的请求。 Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常...
摘要:分布式爬虫框架详解随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。下载器中间件位于引擎和下载器之间的框架,主要是处理引擎与下载器之间的请求及响应。 scrapy-redis分布式爬虫框架详解 随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。由于互联网是开放的,每个人都可以在网络上...
阅读 969·2021-09-26 10:15
阅读 2030·2021-09-24 10:37
阅读 2556·2019-08-30 13:46
阅读 2612·2019-08-30 11:16
阅读 2395·2019-08-29 10:56
阅读 2578·2019-08-26 12:24
阅读 3457·2019-08-23 18:26
阅读 2644·2019-08-23 15:43