Python Scrapy 爬虫框架 | 2、利用 Scrapy 爬取我的博客文章标题链接

admin 2022年7月25日04:46:47安全开发评论2 views2359字阅读7分51秒阅读模式

0x00 新建项目

在终端中即可直接新建项目,这里我创建一个名称为 teamssix 的项目,命令如下:

scrapy startproject teamssix

命令运行后,会自动在当前目录下生成许多文件,如下所示:

teamssixscrapy.cfg  #scrapy的配置文件    └─teamssix  #项目的Python模块,在这里写自己的代码items.py  #项目定义文件middlewares.py  #项目中间件文件pipelines.py  #项目管道文件,用来处理数据的写入存储等操作settings.py  #项目设置文件        │  __init__.py        ├─spiders  #在这里写爬虫代码        └─ __init__.py

接下来使用 Pycharm 打开我们刚才新建的项目。

0x01 创建一个爬虫

首先,在 spiders 文件下 new 一个 python file,这里我新建了一个名为 teamssix_blog_spider 的 py 文件。

在新建的文件中写入自己的代码,这里我写的代码如下:

import scrapyclass BlogSpider(scrapy.Spider):  #创建 Spider 类   name = 'blogurl'#爬虫名称,必填   start_urls = ['https://www.teamssix.com']  #待爬取的 url ,必填   def parse(self,response):  #定义 parse 函数,以解析爬到的东西      print(response.url)      print(response.text)

0x02 运行爬虫

之后运行我们刚新建的 blogurl 项目,运行命令如下:

scrapy crawl blogurl

之后输出结果如下:

2019-12-23 18:33:45 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: teamssix)2019-12-23 18:33:45 [scrapy.utils.log] INFO: Versions: lxml 4.2.5.0, libxml2 2.9.8, cssselect 1.1.0, parsel 1.5.2, w3lib 1.21.0, Twisted 19.10.0, Python 3.7e'……省略……https://www.teamssix.com<!DOCTYPE html><html lang="zh-CN"><head><meta name="generator" content="Hexo 3.8.0"><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="vi                                      tent><meta name="keywords" content><meta name="author" content="Teams Six,undefined"><meta name="copyright" content="Teams Six"><title>【Teams Six】</title><link rel="styles                                      css"><link rel="icon" href="/favicon.ico"><!-- script(src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML")--><script src="/js/mathjax/mathjax    tex2jax: {inlineMath: [['$', '$'], ['\(', '\)']]}});……省略……

不难看出,我们想要的内容已经被打印出来了,但这还远远不够,我们还需要对其进行简单的解析,这里就用到了 BeautifulSoup ,有过爬虫经验的对这个库应该是不陌生了。

0x03 爬取内容解析

接下来,想要获取到每个文章的链接,只需要对 parse 的内容进行修改,修改也很简单,基本之前写的多线程里的代码一致。

def parse(self,response):   soup = BeautifulSoup(response.text,'html.parser')   for i in soup.select('.post-title'):      print('https://www.teamssix.com{}'.format(i['href']))

很简单的一个小爬虫,然后将爬虫运行一下

~# scrapy crawl blogurl  #运行命令2019-12-23 19:02:01 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: teamssix)……省略……https://www.teamssix.com/year/191222-192227.htmlhttps://www.teamssix.com/year/191220-161745.html……省略……2019-12-23 19:02:04 [scrapy.core.engine] INFO: Spider closed (finished)

此时就能够将我们想要的东西爬下来了,但这实现的功能还是比较简单,接下来将介绍如何使用 Scrapy 爬取每个子页面中的详细信息。

参考链接:

https://youtu.be/aDwAmj3VWH4
http://doc.scrapy.org/en/latest/intro/tutorial.html


往期推荐

Python Scrapy 爬虫框架 | 1、简介与安装

漏洞笔记 | 浅谈SSRF原理及其利用

Python 学习笔记 | 异步IO (asyncio) 协程

Python Scrapy 爬虫框架 | 2、利用 Scrapy 爬取我的博客文章标题链接

原文始发于微信公众号(TeamsSix):Python Scrapy 爬虫框架 | 2、利用 Scrapy 爬取我的博客文章标题链接

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月25日04:46:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  Python Scrapy 爬虫框架 | 2、利用 Scrapy 爬取我的博客文章标题链接 http://cn-sec.com/archives/785671.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: