scrapy之创建scrapy项目

1. scrapy的安装

注: scrapy需要python3.8+

使用以下命令安装scrapy项目

pip install scrapy

2. 创建scrapy项目

2.1 创建scrapy项目

scrapy startproject baidutop # 创建一个baidutop项目

2.2 创建spider

cd baidutop # 进入到baidutop文件夹中,注意baidutop文件夹里面还有一个baidutop文件夹,这里选择外面的这个baidutop文件夹

scrapy genspider topbaidu top.baidu.com # topbaidu是spider的名称(每个spider应该有唯一的一个名称),top.baidu.com为spider要采集的域名

2.3 初始spider

import scrapy

class TopbaiduSpider(scrapy.Spider):

name = "topbaidu" # spider名称

allowed_domains = ["top.baidu.com"] # 允许采集的域名

start_urls = ["https://top.baidu.com"] # 自动生成的初始url,没有start_requests函数将自动从这里面开始进行采集

# 解析函数,如果没有指定callback,请求完成后将自动回调parse进行解析

def parse(self, response):

pass

2.4 完整版spider

import scrapy

# 每一个自设置的spide都要继承scrapy.Spider

class TopbaiduSpider(scrapy.Spider):

name = 'topbaidu'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'

}

def start_requests(self):

urls = [

'https://top.baidu.com/board?tab=realtime'

]

for url in urls:

yield scrapy.Request(

url,

headers=self.headers

)

def parse(self, response):

urls = response.xpath("//a[@class='title_dIF3B ']/@href").getall()

for url in urls:

print('======================')

print(url)

print('======================')

yield scrapy.Request(

url,

headers=self.headers,

callback=self.parse_detail

)

def parse_detail(self, response):

items = {

'title': ''.join(response.xpath("//title/text()").getall())

}

self.log(items)

yield items

2.5 运行spider

scrapy crawl topbaidu # 正常运行

scrapy crawl topbaidu -o top.json # 将items写入到top.json文件中,生成json文件

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: