脚本宝典收集整理的这篇文章主要介绍了不会python,也可以开始爬虫,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
–引自 《python 3 网络爬虫开发实战》序言
听别人说爬虫,自己也一直想学学,苦于没弄过python,一直没有付诸行动。虽然通过别的语言也可以实现,总的原理就是获取网页内容、解析、存储,但现在好像说爬虫不用python就“不正宗”似的。
弄了本《python 3 网络爬虫开发实战》看看,在序言里就看到了这样一段话。大概浏览了一下书的内容,觉得是不是可以不学python,直接开始配环境,装框架,通过配置的方式达到目的。 **毕竟不是想做python专职开发,**只是想“爬一爬”,通过学习爬虫,顺带学一些python的知识。
不过一定要注意,不让爬的一定不能爬,爬公开的内容也要注意,尽量降低频率,像正常访问一样,别给人家服务器造成压力。
作者爬过的大学我就不爬了,突然脑子里就冒出来了山大,那就去看看,在官网菜单中大概浏览了一下,还真找到了,上地址F1a;https://culture.sdu.edu wangt.cc /sdyx/zxxq/17.htm
F12看一下HTML
安装环境及相关插件就全部采用最新版本吧,官网地址:https://www.python.org/
下载对应系统安装包,本文以Windows下为例,目前最新版本为3.10.1
双击下载的python-3.10.1-amd64.exe文件开始安装。
勾选Add Python 3.10 to PATH, 添加对应的环境变量。
因为默认安装在AppData,改一下,选择Customize installation,进入下一步:
保持默认,继续下一步,
修改安装地址。点击Install按钮开始安装。
Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sITemap爬虫等,最新版本又提供了web2.0爬虫的支持。
依次执行如下命令,安装依赖,类似其他包管理器一样
piP3 install lxml
pip3 install pyOPEnSSL
pip3 install Twisted
pip3 install pyWin32
下载速度不快,慢慢等等安装完成即可:
通用采用pip3命令安装:
pip3 install Scrapy
执行scrapy startPRoject GetPhotos
命令创建一个项目,名称暂定为“GetPhotos”
F:>scrapy startproject GetPhotos
New Scrapy project 'GetPhotos', using template directory 'C:Python310libsite-packagesscrapytemplatesproject', created in:
F:GetPhotos
You can start your First spider with:
cd GetPhotos
scrapy genspider example example wangt.cc
创建成功,在当前目录创建了一个以项目名名称的文件夹。并且给出了下一步的提示。
文件内容如下:
里面还有个同名”GetPhotos“的文件夹.
现在需要做一些配置性的工作,可以考虑用xcode打卡此目录,方便修改文件。(建议安装python插件)
有个items.py文件,带如下
import scrapy
class GetphotosItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
pass
我将它理解为Model,一个实体类贯穿全场,给他添加三个字段
class GetphotosItem(scrapy.Item):
name = scrapy.Field()
time = scrapy.Field()
src = scrapy.Field()
分别用于存储图片的标题、时间和原始地址。
进入项目目录:
cd GetPhotos
创建spider
scrapy genspider GiveMePhotos culture.sdu.edu wangt.cc
可以看到spiders文件夹下多了一个名为GiveMePhotos.py的文件,其内容如下
import scrapy
class GivemephotosSpider(scrapy.Spider):
name = 'GiveMePhotos'
Allowed_domains = ['culture.sdu.edu wangt.cc ']
start_urls = ['http://culture.sdu.edu wangt.cc /']
def parse(self, response):
pass
start_urls肯定要改成我们的目标地址:https://culture.sdu.edu wangt.cc /sdyx/zxxq/17.htm
然后就是分析这个网页的元素,即parse方法,修改后的代码如下
import scrapy
class GivemephotosSpider(scrapy.Spider):
name = 'GiveMePhotos'
allowed_domains = ['culture.sdu.edu wangt.cc ']
start_urls = ['https://culture.sdu.edu wangt.cc /sdyx/zxxq/17.htm']
def parse(self, response):
ul = response.css('.case_list_ul').xpath('./li')
for li in ul:
item = test1Item()
item['name'] = li.xpath('./div/span[1]/text()').extract_first()
item['time'] = li.xpath('./div/span[2]/text()').extract_first()
item['src'] = response.urljoin(li.xpath('./div/div/img/@data-original').extract_first())
yield item
如果用过jquery应该很容易理解这段代码,无非就是找到li标签,循环遍历,然后再提取对应的节点。最终将解析的内容给item实体。
scrapy框架提供了相应的下载组件,如果不需要图片处理,用普通的文件下载FilesPipeline就行了,如果需要处理可以采用ImagessPipeline,这次只要下载就行了,修改pipelines.py文件
From scrapy.pipelines.files import FilesPipeline
import scrapy
class GetphotosPipeline(FilesPipeline):
def file_path(self, request, response=None, info=None, *, item=None):
#return request.url.split('/')[-1]
return item['name'] + ".jpg"
def get_media_requests(self, item, info):
yield scrapy.Request(item['src'])
代码含义是:
在settings.py中添加一行:
FILES_Store = './imgs'
设置为子目录imgs。
找到ITEM_PIPELINES节点,
ITEM_PIPELINES = {
'GetPhotos.pipelines.GetphotosPipeline': 300,
}
默认是用“#”号注释掉的,去掉注释。
执行命令:
scrapy crawl GiveMePhotos
在命令窗口可以看到爬虫启动、获取结果直到自动结束的过程。
项目目录自动多了一个imgs文件夹,如下图
至此,一个简要的爬虫就完成了,虽然实现的功能比较简单,但也可以说有一定的收获。
虽然是本文篇幅也不算太短了,但实际上大部分都是在做安装配置的工作,实际上涉及python语法的都很少。
思考:如何自动翻页下载下一页呢?
注意:虽然是公开内容,但一定要慢慢爬。且此过程仅供学习,爬取内容不可作为其他用途。
@H_360_492@以上是脚本宝典为你收集整理的不会python,也可以开始爬虫全部内容,希望文章能够帮你解决不会python,也可以开始爬虫所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。