Python爬虫——scrapy_crawlspider读书网

创建crawlspider爬虫文件:

base 复制代码
scrapy genspider -t crawl 爬虫文件名 爬取的域名

scrapy genspider -t crawl read https://www.dushu.com/book/1206.html

LinkExtractor 链接提取器通过它,Spider可以知道从爬取的页面中提取出哪些链接,提取出的链接会自动生成Request请求对象

python 复制代码
class ReadSpider(CrawlSpider):
    name = "read"
    allowed_domains = ["www.dushu.com"]
    start_urls = ["https://www.dushu.com/book/1206_1.html"]
	# LinkExtractor 链接提取器通过它,Spider可以知道从爬取的页面中提取出哪些链接。提取出的链接会自动生成Request请求对象
    rules = (Rule(LinkExtractor(allow=r"/book/1206_\d+\.html"), callback="parse_item", follow=False),)

    def parse_item(self, response):
        name_list = response.xpath('//div[@class="book-info"]//img/@alt')
        src_list = response.xpath('//div[@class="book-info"]//img/@data-original')


        for i in range(len(name_list)):
            name = name_list[i].extract()
            src = src_list[i].extract()

            book = ScarpyReadbook41Item(name=name, src=src)
            yield book

开启管道、

写入文件

python 复制代码
class ScarpyReadbook41Pipeline:
    def open_spider(self, spider):
        self.fp = open('books.json', 'w', encoding='utf-8')

    def process_item(self, item, spider):
        self.fp.write(str(item))
        return item

    def close_spider(self, spider):
        self.fp.close()

运行之后发现没有第一页数据

需要在start_urls里加上_1,不然不会读取第一页数据

python 复制代码
start_urls = ["https://www.dushu.com/book/1206_1.html"]
相关推荐
hx_long24 分钟前
centos7 安装miniconda
python·conda
这里有鱼汤32 分钟前
退退退,Python 调试的科学方法,让你高效改 Bug
python
databook35 分钟前
『Plotly实战指南』--布局基础篇
python·数据分析·数据可视化
这里有鱼汤39 分钟前
Python 让电脑说话?没网也能用,真香!🗣️💻
后端·python
AI大模型团团44 分钟前
从基础概念到前沿应用了解机器学习
人工智能·python·随机森林·机器学习·ai·线性回归·llama
yuweififi1 小时前
随手笔记-python-opencv 读取图像的顺序 与pytorch处理图像的顺序
pytorch·笔记·python·opencv
SsummerC1 小时前
【leetcode100】杨辉三角
python·leetcode·动态规划
SpikeKing1 小时前
Server - 使用 FastAPI + OpenTelemetry + Zipkin 搭建 Python 服务
python·api·fastapi·zipkin·opentelemetry
桃子叔叔1 小时前
python学习从0到专家(8)容器之列表、元组、字典、集合、字符串小结
开发语言·python·学习
想做富婆2 小时前
python入门:不同进制数据的表示方式,转换;数据类型的转换,隐式类型的转换
开发语言·python