scrapy学习之路(四)给scrapy一个爬取目标

运行环境和开发环境搭建好了,scrapy的基本运行流程也有了基本了解以后,我们会有个疑问?如何让schedule组件知道我需要爬取的网站的网址了?我们需做的是给scrapy一个爬取的目标。

使用vscode打开创建的工程(工程创建方法:https://blog.csdn.net/huyongchao98/article/details/103909481 不了解scrapy的同学,请从https://blog.csdn.net/huyongchao98/article/details/103909153开始阅读)。

在工程目录下找到spiders路径,在这里可以创建一个.py文件,文件名自己定义,作为爬虫开始工作的入口。创建一个类,类名自己定义,类需要继承scrapy.Spider,类的基本结构如下:

(1)需要定义的基本属性:

         name: 爬虫的名称,执行 scrapy crawl <spider_name>的时候,需要一致

        allowed_domains: 整个爬取周期中,允许爬取的domain,如 baidu.com  你就可以爬取a.baidu.com等二级域名了。

       start_urls: 这个属性指定了爬取网站的url,也就是爬取的入口网站,可以是多个,也就是scrapy的爬取目标。也可以不通过属性指定通过start_requests方法,也可以实现相同的目的。

(2)基本的方法:

     start_requests(self): 开始的请求,返回一个或多个异步的request,可以达到指定scrapy网站爬取入口的目的。

一些其他的技巧:

     (1)传递参数:有时候爬取网站的时候,需要添加一些外部参数,比如爬取的页码、搜索的关键字等,需要在爬虫运行的时候,由外部指定参数,这是我们可以在运行scrapy crawl命令的时候,通过-a来添加参数,如:

scrapy crawl testSpider -a parameter=a

在spider类中,添加对应的初始化方法,可以获取到对应的参数,上面的这条命令,对应的初始化方法是:

def __init__(self, parameter=None, *args, **kwargs):

 

   一个完整的spider例子如下:

import scrapy

import urllib.parse


 

class testSpider(scrapy.Spider):

name = 'maimaiSpider'

allowed_domains = ['test.cn']

 

def start_requests(self):

feed = 'https://test.cn/web/search_center?type=dsfa&query=' + urllib.parse.quote(

self.companyname) + '&highlight=true'

urls = [

'https://acc.test.cn/login',

'https://test.cn/feed_list',

feed, 

]

for url in urls:

yield scrapy.Request(url=url, callback=self.parse)

 

def __init__(self, companyname=None, *args, **kwargs):

super().__init__(*args, **kwargs)

self.companyname = companyname

driver = None # 实例selenium

cookies = None # 用来保存cookie

 

def parse(self, response):

print(response.url)

print(response.body.decode('utf-8'))

 

      

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值