【python爬虫】Pycharm+Scrapy+win10搭建scrapy开发环境+运行一个Demo
程序员文章站
2022-05-28 18:39:40
...
准备工作
基础环境准备
- win10
- pycharm
- python3(同时保证有pip环境)
scrapy环境准备
- 打开网址
https://www.lfd.uci.edu/~gohlke/pythonlibs/
- 下载Twisted(按python版本+系统位数对应)(浏览器下ctrl+f直接搜索)
- 下载scrapy (截止本文撰写,当前版本是:Scrapy-1.6.0-py2.py3-NONE-any.whl)(不区分系统和python版本)
- 准备好这两个whl文件(我习惯在桌面建个临时文件夹,然后把他俩扔进去)
- 安装whl:在文件夹下按住shift 然后点击右键,选择在此处打开powershell。
- 执行命令
pip install teisted文件名
- 执行命令
pip install scrapy文件名
- 等待安装完成后 执行命令
pip list
查看已经安装的python包中是否有上面两个模块,正常的话都有了。 - 如图,安装成功
pycharm创建一个scrapy项目
创建一个项目
- 打开pycharm 创建一个普通的项目
- 打开pycharm自带的终端:terminal
- 执行命令
scrapy startproject demodemo
- 创建目录如图
各个文件的用处:
../demodemo/ # 爬虫项目
demodemo/ # 爬虫文件夹
__init__.py # 必须存在
items.py # 字段 可以写需要爬取对象的类
middlewares.py #中间件
pipelines.py # 管道文件
settings.py # 爬取配置
spiders/ # 开发位置
scrapy.cfg # 项目配置
写一个DEMO
- 在terminal中通过cd命令进入到spiders文件夹
- 执行命令
scrapy genspider 爬虫名 爬虫域
- 在我的demo中:``````(对应的是 随便找了一个段子网站:https://ishuo.cn/ )
- 编辑items.py
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html
#
# import scrapy
#
#
# class DemodemoItem(scrapy.Item):
# # define the fields for your item here like:
# # name = scrapy.Field()
# pass
import scrapy
class DuanZiItem(scrapy.Item):
# 作者
author = scrapy.Field()
# 内容
word = scrapy.Field()
- 编辑spiders/Duanzi.py
# -*- coding: utf-8 -*-
# import scrapy
#
#
# class DuanziSpider(scrapy.Spider):
# name = 'Duanzi'
# allowed_domains = ['ishuo.cn']
# start_urls = ['http://ishuo.cn/']
#
# def parse(self, response):
# pass
# -*- coding: utf-8 -*-
import scrapy
from demodemo.items import DuanZiItem
class DemospiderSpider(scrapy.Spider):
# 爬虫名称
name = 'duanzi'
# 爬虫域
allowed_domains = ['ishuo.cn']
# 爬虫地址
start_urls = ['http://ishuo.cn/']
# 处理回复
def parse(self, response):
data_list = []
text_list = response.xpath("//div[@id=\"list\"]/ul/li")
for item in text_list:
word = item.xpath('./div[@class=\"content\"]/text()').extract()[0]
author = item.xpath('./div[@class="info"]/a/text()').extract()[0]
ddata = DuanZiItem()
ddata['author'] = author
ddata['word'] = word
data_list.append(ddata)
pass
# print(data_list)
with open("demo.txt","w",encoding="utf-8") as f:
f.write(str(data_list))
-
编辑setting.py
修改一个值
ROBOTSTXT_OBEY = False
添加一个请求头
DEFAULT_REQUEST_HEADERS = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
# 'Accept-Language': 'en',
}
- 注意:这句话会报错
from demodemo.items import DuanZiItem
是因为本地包路径的问题
解决方案:选中项目名
(是scrapy项目名:demodemo 不是pycharm项目名demo)
右键
运行scrapy
执行命令:scrapy crawl duanzi
即可看到一个txt文件
如何让pycharm运行scrapy
- 编写一个脚本
放到项目根目录(与.cfg同目录)
start.py
# -*- coding:utf-8 -*-
from scrapy import cmdline
cmdline.execute("scrapy crawl duanzi".split())
3.
4.选择刚才的start.py 并给这个脚本起个名字
apply
【完】
欢迎关注我的微信公众号:并非一无所有
下一篇: 一个有意思的分钱模拟问题