scrapy模块
目录
- scrapy模块
-
-
-
- 安装scrapy
- 创建一个项目
-
-
安装scrapy
# 如果安装了conda 直接使用
conda install scrapy
# 使用pip 安装
pip install scrapy
# 安装出错
# 如果是Twisted安装出错,进入官网
https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
# 找到Twisted安装包,下载下来之后使用 pip 安装
创建一个项目
- 打开一个cmd,进入安装scrapy的环境
- 创建一个项目,例如爬取 https://www.bqkan.com/3_3012/ 笔趣看的小说 【武动乾坤】
- 创建一个爬虫
- 使用代码编辑器打开项目(例如pycharm) 目录结构如下
- 新创建启动文件
from scrapy import cmdline
cmdline.execute("scrapy crawl wu".split())
- 修改wu.py文件
import scrapy
from wudong.items import WudongItem
class WuSpider(scrapy.Spider):
name = 'wu'
allowed_domains = ['www.bqkan.com']
start_urls = ['https://www.bqkan.com/3_3012/1331001.html']
def parse(self, response):
contents = response.css('div#content::text').getall()
contents = [x.strip() for x in contents if x.strip() != '']
contents.pop()
contents.pop() # 去除结尾多余的字符
contents = "\n\t".join(contents).replace('[笔趣看\xa0\xa0www.biqukan.com]百度搜索“笔趣看小说网”手机阅读:m.biqukan.com', '')
title = response.css('h1::text').get() # 章节名
yield WudongItem(title=title, contents=contents)
next_url = response.xpath('//a[contains(text(), "下一章")]/@href').get()
if next_url:
next_url = response.urljoin(next_url)
yield scrapy.Request(url=next_url, callback=self.parse)
- 修改items.py文件
import scrapy
class WudongItem(scrapy.Item):
title = scrapy.Field()
contents = scrapy.Field()
- 修改pipelines.py文件
class WudongPipeline:
def __init__(self):
# 保存为txt文件
self.f = open('武动乾坤.txt', 'w', encoding='utf-8')
def process_item(self, item, spider):
title = item['title']
contents = item['contents']
content = f'{title}\n\t{contents}'
print(content, file=self.f, flush=True) # 即使写入
# self.f.write(content)
return item
def close_spider(self, spider):
self.f.close()
- 运行 startwudong.py 文件
正常会输出如下结果
同时创建一个文本文件
一个简单的scrapy爬虫结束
本文地址:https://blog.csdn.net/weixin_45906794/article/details/110930276
黄山市民网:https://www.huangshanshimin.com/