scrapy抓取博客

scrapy主要的步骤:

  • 创建一个scrapy项目
  • 获取博客内容和保存
  • 抓去url和title
  • 储存标题和链接
  • 获取文章内容

一.创建一个scrapy: 

在桌面上会生成一个文件夹:

在开始爬虫前,打开items.py:

class BlogspiderTtem(scrapy.Item):
    title=scrapy.Field()
    link=scrapy.Field()
    concent=scrapy.Field()

二.获取博客网页并保存:

1. 在blogSpider/spider创建一个eqwaak.py的文件,并制定爬取的范围:
import scrapy

class EqwaakSpider(scrapy.Spider):
    name = 'eqwaak'
    allowed_domains=['链接']
    start_urls=['链接']
    
    
    def parse(self, response):
        pass

创建爬虫器,必须要继承scarpy.Spider类:

  • name:爬虫名字的唯一名字
  • allow_domains=[]:爬取域名下这个网页
  • start_urls:爬虫会在启动爬取url列表
  • parse():爬虫的一个方法,获取爬虫的response,解析网页
 2.修改parse的内容:
    def parse(self, response):
        print(response.text)
        filename="index.html"
        with open(filename,'w',encoding='utf-8')as f:
            f.write(response.text)

然后在cmd里面执行:

scrapy crwal  爬虫名字

三.提取博客标题和链接数据 

 修改eqwaak.py的代码:

import scrapy
from bs4 import BeautifulSoup

class EqwaakSpider(scrapy.Spider):
    name = 'eqwaak'
    allowed_domains=['']
    start_urls=['']


    def parse(self, response):
       soup=BeautifulSoup(response.text,"lxml")
       title_list=soup.find("h4",class_="blog-img-box-top").a.text.strip()
       print('文章标题:',title_list)
       
       for i in range(len(title_list)):
           title=title_list[i].a.text.strip()
           print('第%s篇文章标题是%s'%(i+1,title))
里面把提取的数据放入里面:

 

import scrapy
from bs4 import BeautifulSoup
from financeSpider.items import BlogspiderTtem

class EqwaakSpider(scrapy.Spider):
    name = 'eqwaak'
    allowed_domains=['链接']
    start_urls=['链接']


    def parse(self, response):
       items=[]
       soup=BeautifulSoup(response.text,"lxml")
       title_list=soup.find("h4",class_="blog-img-box-top")
       print('文章标题:',title_list)

       for i in range(len(title_list)):
           item=BlogspiderTtem()
           title=title_list[i].a.text.strip()
           link=title_list[i].a["herf"]
           
           item["title"]=title
           item["link"]=link
           items.append(item)
           
        return items
如果输出是josn格式,可以写:

scrapy crwal eqwaak -o article.json 

 如果输出是csv格式,可以写:

scrapy crwal eqwaak -o artticle.vsc 

四.储存博客标题和链接 :

 打开pipelines.py,代码:
class FinancespiderPipeline(object):
    #保存地址
    file_path="C:/Users/xuyix/Desktop/financeSpider/result.txt"

    def __init__(self):
        self.article=open(self.file_path,"a+",encoding="utf-8")

    def process_item(self, item, spider):
        title=item["title"]
        link=item["link"]
        content=item["content"]
        output=title+'\t'+link+'\t'+content+'\n\n'
        self.article.write(output)
        return item
还需要修改setting里面的代码
取消注释
ITEM_PIPELINES = {
   "financeSpider.pipelines.FinancespiderPipeline": 300,
}
在命令行输入: 

scrapy crwal eqwaak 

五.获取文章内容: 

在eqwaak.py里面添加代码:
    def parse2(self,response):
        item=response.meta['item']
        #解析文章内容
        soup=BeautifulSoup(response.text,"lxml")
        content=soup.find("div",class_="blog-img-box-top").text.strip()
        content=content.replace("\n","")
        item["content"]=content
        yield item
删除text文件:

scrapy crwal eqwaak

相关推荐

  1. 了发

    2024-05-13 14:34:02       6 阅读
  2. 每日

    2024-05-13 14:34:02       47 阅读
  3. 搬家公告

    2024-05-13 14:34:02       43 阅读
  4. 随手记

    2024-05-13 14:34:02       39 阅读
  5. 随手记

    2024-05-13 14:34:02       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 14:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 14:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 14:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 14:34:02       20 阅读

热门阅读

  1. mysql编程1

    2024-05-13 14:34:02       9 阅读
  2. NTP 协议获取网络时间

    2024-05-13 14:34:02       11 阅读
  3. day10-16:Spring Security

    2024-05-13 14:34:02       8 阅读
  4. vue3 setup标签使用总结

    2024-05-13 14:34:02       12 阅读
  5. [力扣题解]135. 分发糖果

    2024-05-13 14:34:02       11 阅读
  6. Leetcode 3145. Find Products of Elements of Big Array

    2024-05-13 14:34:02       11 阅读
  7. 《管理评论》文本分析技术最新进展总结盘点

    2024-05-13 14:34:02       12 阅读
  8. css 实现背景图和背景色正片叠底

    2024-05-13 14:34:02       12 阅读
  9. git cherry-pick命令使用

    2024-05-13 14:34:02       14 阅读