网络爬虫——scrapy案例「建议收藏」

2022-09-13 15:13:18 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

1.创建项目

打开一个终端输入(建议放到合适的路径下,默认是C盘)

scrapy startproject TXmovies

cd TXmovies

scrapy genspider txms v.qq.com

2.修改setting

修改三项内容,第一个是不遵循机器人协议,第二个是下载间隙,由于下面的程序要下载多个页面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求头,添加一个User-Agent,第四个是打开一个管道

ROBOTSTXT_OBEY=False

DOWNLOAD_DELAY=1

DEFAULT_REQUEST_HEADERS={

‘Accept’:’text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8′,

‘Accept-Language’:’en’,

‘UserAgent’:’Mozilla/5.0(WindowsNT6.2;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/27.0.1453.94Safari/537.36′

}

ITEM_PIPELINES={

‘TXmovies.pipelines.TxmoviesPipeline’:300,

}

3.确认要提取的数据,item项

item定义你要提取的内容(定义数据结构),比如我提取的内容为电影名和电影描述,我就创建两个变量。Field方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,等待提取数据后再赋值。下面item的结构可以表示为:{‘name’:”,’descripition’:”}。

#-*-coding:utf-8-*-

#Define here the models for your scraped items

#

#See documentation in:

#https://docs.scrapy.org/en/latest/topics/items.html

import scrapy

class TxmoviesItem (scrapy.Item):

#define the fields for your item here like:

#name=scrapy.Field()

name=scrapy.Field()

description=scrapy.Field()

4.写爬虫程序

5.交给管道输出

管道可以处理提取的数据,如存数据库。我们这里仅输出。

#-*-coding:utf-8-*-

#Define your item pipelines here

##Don’t forget to add your pipeline to the ITEM_PIPELINES setting #See:https://docs.scrapy.org/en/latest/topics/item-pipeline.html

classTxmoviesPipeline(object):

def process_item(self,item,spider):

print(item)

return item

6.run,执行项目

from scrapy import cmdline

cmdline.execute(‘scrapy crawl txms’.split()

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153147.html原文链接:https://javaforall.cn

0 人点赞