{1} 新建项目
scrapy startproject projectName # projectName 为新建项目的名称
运行后会出现以下提示
You can start your first spider with:
cd one # cd 到指定文件夹即可
scrapy genspider example example.com
{2} 新建爬虫项目
scrapy genspider genspiderName genspiderUrl
"""
{1} genspiderName 为爬虫项目的名称
{2} genspiderUrl 为爬虫允许的域名
"""
运行后会出现类似于以下的提示
Created spider 'test' using template 'basic' in module: # test 当时你新建的项目的名称
FirstDemo.spiders.test # 文件的目录地址 及 FirstDemo/spiders/test.py 文件
{3} 运行项目
我们对现在的项目加一些配置,如下所示
import scrapy
class BaiduSpider(scrapy.Spider):
"""
:param name: 爬虫文件的名称,当前源文件的唯一标识
:param allowed_domains: 允许的域名,可以不写,用于限定域名(start_urls 只能执行 allowed_domains 的域名下的url列表)
:param start_urls: 启始的url列表,自动使用 get 方法进行数据请求
:return
{1} 运行命令 scrapy crawl baidu 后,默认会输出工程的日志信息
{2} 也可以在后面跟一个参数nolog,即scrapy crawl spider_name --nolog
{3} settings.py
{3.1} ROBOTSTXT_OBEY = True 表示遵从 robots 协议,我们需要把 True 改成 False
{3.2} USER_AGENT = your user agent 找一个 user agent 填写到此处
{3.3} 可以指定类型日志的输出 LOG_LEVEL = "ERROR" 可以这样写,也可以使用 {2} 方法进行操作,本人推荐使用 {2},具体情况因需求而定
"""
name = 'baidu'
allowed_domains = ['www.baidu.com']
start_urls = ['https://www.baidu.com/']
def parse(self, response, **kwargs):
"""
:param response:服务器返回的响应对象
:param kwargs:
:return:用于数据解析,用于解析 start_urls 下的 url 列表中的 urls
"""
print(response)
我们运行下,我们在这里使用的是[^ scrapy crawl baidu --nolog
]命令
[^ scrapy crawl baidu --nolog
]: 其中的baidu 及为语法中的 spider_name,及爬虫文件的 name /唯一标识
{4} 运行结果
我这里的 start_urls 里面只有一条数据,故,只有一条返回信息。我的返回信息如下:
<200 http://www.baidu.com/>