您的位置:首页 > 科技 > 能源 > 国内顶尖设计公司_惠州网站建设领头羊_怎么用手机创建网站_2023知名品牌营销案例100例

国内顶尖设计公司_惠州网站建设领头羊_怎么用手机创建网站_2023知名品牌营销案例100例

2024/12/23 9:34:24 来源:https://blog.csdn.net/mecende/article/details/142589111  浏览:    关键词:国内顶尖设计公司_惠州网站建设领头羊_怎么用手机创建网站_2023知名品牌营销案例100例
国内顶尖设计公司_惠州网站建设领头羊_怎么用手机创建网站_2023知名品牌营销案例100例

安装

        除了scrapy本身还要安装两个库 

pip install scrapy
pip install pywin32
pip install wheel

 创建项目

在要创建项目的地方打开powershell

scrapy startproject 项目名

我们得到这样的项目结构,功能如下 

  1.         scrapy.cfg                项目的主配置信息
  2.         items.py                   设置项目模板,用于结构化数据
  3.         piplines.py                数据的持久化处理
  4.         seting                        配置文件
  5.         spiders                       爬虫文件目录

配置信息

seeting.py下修改是否支持数据爬取修改为允许,true不允许,false允许

  

 将这一行的内容改为false

配置浏览器请求头中的user-agent

根据网站反爬措施制定其他的配置 

配置模板

        items.py中照着给出的格式配置自己的数据模板

        变量名 = scrapy.Field()

创建爬虫文件

指定爬取目标

 回到powershell,

cd 项目名
scrapy genspider 爬虫文件名 爬取目标网址

得到这样一个文件

import scrapyclass QuotesSpider(scrapy.Spider):# 爬虫名name = "quotes"allowed_domains = ["quotes.toscrape.com"]# 爬取目标start_urls = ["https://quotes.toscrape.com/"]# 爬取动作def parse(self, response):

寻找元素和内容

在parse方法中定义爬取动作 ,参数列表中的response是爬取目标的响应对象。

具有如下属性

  1. url:响应的 URL 地址。
  2. status:HTTP 状态码,如 200 表示成功,404 表示未找到等。
  3. headers:响应的 HTTP 头部信息,是一个类似字典的对象。
  4. body:响应体,即服务器返回的内容,是一个字节串(bytes)。
  5. text:响应体的字符串形式,如果响应的 Content-Type 是文本类型(如 HTML),则可以直接使用此属性获取内容。
  6. encoding:响应的编码方式,用于将 body 转换为 text
  7. meta:传递给响应的元数据信息,常用于在请求和响应之间传递数据。
  8. request:触发此响应的请求(Request)对象。

具有如下方法

  1. xpath():用xpass寻找元素
  2. css():用css寻找元素
  3. urljoin():构造网址
  4. get() 和 getall(): 这两个方法用于从SelectorSelectorList对象中提取数据。get()方法返回第一个匹配节点的文本或属性值(如果指定了属性),而getall()方法返回所有匹配节点的文本或属性值列表。
  5. extract() 和 extract_first(): 这两个方法是旧版本Scrapy中用于提取数据的方法,但在新版本中,推荐使用get()getall()方法。extract()方法返回所有匹配节点的文本列表,而extract_first()方法返回第一个匹配节点的文本。
  6. re(regex, replace_entities=True) 和 re_first(regex, default=None, replace_entities=True): 这两个方法允许你使用正则表达式来提取匹配的数据。re()方法返回所有匹配的字符串列表,而re_first()方法返回第一个匹配的字符串。
  7. attrib: 这是一个属性字典,用于访问当前节点的属性。如果当前对象是SelectorList,则attrib将返回列表中第一个元素的属性字典。

        使用xpath和css方法寻找元素的时候如果返回多个值的时候添加.extract()返回的是str类型列表,单个值则为.extract_first(),返回的是str类型


text = q.xpath(".//span[@class='text']/text()").extract_first()
author = q.xpath('.//span/small[@class="author"]/text()').extract_first()   
tags = q.xpath('.//div[@class="tags"]/a[@class="tag"]').extract()

        这样找到的元素可以直接被bs4解析并获取值。

将结果组成模板

        首先导入item,并在要组成模板的位置实例化一个ScrapydemoItem对象

from scrapydemo.items import ScrapydemoItemitem = ScrapydemoItem()#在你要组成模板的位置写

         为实例属性赋值

item["text"] = text
item["author"] = author
item["tags"] = tags

        结束爬虫        yield类似return,但是可以循环返回

yield item

         每返回一个item会写入一条数据

        当然也可以不返回item,获取到下一个页面的url即可继续访问下一个页面

        # 获取访问下一页地址next = response.css('.pager .next .a::attr(href)').extract_first()  # 两个冒号获取属性值# 合成绝对路径url = response.urljoin(next)# 访问请求的回调函数# 第三个参数是关闭地址过滤yield scrapy.Request(url=url,callback=self.parse,dont_filter=True)

         这样就可以调用自己继续访问下一页了

创建启动项

创建main.py 

from scrapy import cmdlinecmdline.execute("scrapy crawl quotes -o quotes.json".split())
#                scrapy crawl 爬虫名  -o代表文件流  创建quotes.json这个文件

        也可以在cmd或powershell中输入字符串中的值 

爬取scrapy官方靶站的示例代码:

import scrapyfrom scrapydemo.items import ScrapydemoItemclass QuotesSpider(scrapy.Spider):# 爬虫名name = "quotes"allowed_domains = ["quotes.toscrape.com"]# 爬取目标start_urls = ["https://quotes.toscrape.com/"]# 爬取动作def parse(self, response):# 获取页面中的元素返回列表quote = response.xpath('//div[@class="quote"]')# 遍历列表每个元素for q in quote:text = q.xpath(".//span[@class='text']/text()").extract_first()    # 获取内容author = q.xpath('.//span/small[@class="author"]/text()').extract_first()    # 获取作者tags = q.xpath('.//div[@class="tags"]/a[@class="tag"]').extract()    # 获取标签# 实例化item = ScrapydemoItem()# 为实例属性赋值item["text"] = textitem["author"] = authoritem["tags"] = tags# 返回数据,相当于return,但是可以循环返回。yield item# 获取访问下一页地址next = response.css('.pager .next .a::attr(href)').extract_first()  # 两个冒号获取属性值# 合成绝对路径url = response.urljoin(next)# 访问请求的回调函数# 第三个参数是关闭地址过滤yield scrapy.Request(url=url,callback=self.parse,dont_filter=True)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com