scrapy爬取猫眼电影排行榜

做爬虫的人,一定离不开的一个框架就是scrapy框架,写小项目的时候可以用requests模块就能得到结果,但是当爬取的数据量大的时候,就一定要用到框架.

下面先练练手,用scrapy写一个爬取猫眼电影的程序,环境配置和scrapy安装略过

第一步肯定是终端运行创建爬虫项目和文件

1 # 创建爬虫项目
2 scrapy startproject Maoyan
3 cd Maoyan
4 # 创建爬虫文件
5 scrapy genspider maoyan maoyan.com

然后在产生的items.py文件夹中定义需要爬取的数据结构

1 name = scrapy.Field()
2 star = scrapy.Field()
3 time = scrapy.Field()

之后打开maoyan.py文件,编写爬虫文件,记得导入items.py文件的MaoyanItem类,并实例化

 1 import scrapy
 2 from ..items import MaoyanItem
 3 ?
 4 class MaoyanSpider(scrapy.Spider):
 5     name = ‘maoyan3‘
 6     allowed_domains = [‘maoyan.com‘]
 7     # 去掉start_urls变量
 8 ?
 9     # 重写start_requests()方法
10     def start_requests(self):
11         for offset in range(0,91,10):
12             url = ‘https://maoyan.com/board/4?offset={}‘.format(offset)
13             yield scrapy.Request(url=url,callback=self.parse)
14 ?
15     def parse(self, response):
16         # 给items.py中的类:MaoyanItem(scrapy.Item)实例化
17         item = MaoyanItem()
18 ?
19         # 基准xpath
20         dd_list = response.xpath(‘//dl[@class="board-wrapper"]/dd‘)
21         # 依次遍历
22         for dd in dd_list:
23             # 是在给items.py中那些类变量赋值
24             item[‘name‘] = dd.xpath(‘./a/@title‘).get().strip()
25             item[‘star‘] = dd.xpath(‘.//p[@class="star"]/text()‘).get().strip()
26             item[‘time‘] = dd.xpath(‘.//p[@class="releasetime"]/text()‘).get().strip()
27 ?
28             # 把item对象交给管道文件处理
29             yield item

定义管道文件pipelines.py,进行持久化储存

 1 class MaoyanPipeline(object):
 2     # item: 从爬虫文件maoyan.py中yield的item数据
 3     def process_item(self, item, spider):
 4         print(item[‘name‘],item[‘time‘],item[‘star‘])
 5 ?
 6         return item
 7 ?
 8 ?
 9 import pymysql
10 from .settings import *
11 ?
12 # 自定义管道 - MySQL数据库
13 class MaoyanMysqlPipeline(object):
14     # 爬虫项目开始运行时执行此函数
15     def open_spider(self,spider):
16         print(‘我是open_spider函数输出‘)
17         # 一般用于建立数据库连接
18         self.db = pymysql.connect(
19             host = MYSQL_HOST,
20             user = MYSQL_USER,
21             password = MYSQL_PWD,
22             database = MYSQL_DB,
23             charset = MYSQL_CHAR
24         )
25         self.cursor = self.db.cursor()
26 ?
27     def process_item(self,item,spider):
28         ins = ‘insert into filmtab values(%s,%s,%s)‘
29         # 因为execute()的第二个参数为列表
30         L = [
31             item[‘name‘],item[‘star‘],item[‘time‘]
32         ]
33         self.cursor.execute(ins,L)
34         self.db.commit()
35 ?
36         return item
37 ?
38     # 爬虫项目结束时执行此函数
39     def close_spider(self,spider):
40         print(‘我是close_spider函数输出‘)
41         # 一般用于断开数据库连接
42         self.cursor.close()
43         self.db.close()

接下来就是修改配置文件settings.py

 1 USER_AGENT = ‘Mozilla/5.0‘
 2 ROBOTSTXT_OBEY = False
 3 DEFAULT_REQUEST_HEADERS = {
 4   ‘Accept‘: ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8‘,
 5   ‘Accept-Language‘: ‘en‘,
 6 }
 7 ITEM_PIPELINES = {
 8    ‘Maoyan.pipelines.MaoyanPipeline‘: 300,
 9    ‘Maoyan.pipelines.MaoyanMysqlPipeline‘:200,
10 }
11 # 定义MySQL相关变量
12 MYSQL_HOST = ‘127.0.0.1‘
13 MYSQL_USER = ‘root‘
14 MYSQL_PWD = ‘123456‘
15 MYSQL_DB = ‘maoyandb‘
16 MYSQL_CHAR = ‘utf8‘

最后,是创建run.py文件,然后就可以运行了

1 from scrapy import cmdline
2 cmdline.execute(‘scrapy crawl maoyan‘.split())

原文地址:https://www.cnblogs.com/lattesea/p/11756552.html

时间: 2024-08-28 21:51:05

scrapy爬取猫眼电影排行榜的相关文章

使用xpath爬取猫眼电影排行榜

最近在学习xpath,在网上找资料的时候,发现一个新手经常拿来练手的项目,爬取猫眼电影前一百名排行的信息,很多都是跟崔庆才的很雷同,基本照抄.这里就用xpath自己写了一个程序,同样也是爬取猫眼电影,获取的信息是一样的,这里提供一个另外的解法. 说实话,对于网页信息的匹配,还是推荐用xpath,虽然正则确实也能达到效果,但是语句过于繁琐,一不注意就匹配不出东西,特别对于新手,本身就不熟悉正则表达式,错了都找不出来,容易劝退.正则我一般用于在处理文件,简直神器. 下面贴代码. import req

python爬取猫眼电影top100排行榜

爬取猫眼电影TOP100(http://maoyan.com/board/4?offset=90)1). 爬取内容: 电影名称,主演, 上映时间,图片url地址保存到mariadb数据库中;2). 所有的图片保存到本地/mnt/maoyan/电影名.png 代码: import re import pymysql as mysql from urllib import request from urllib.request import urlopen u = 'root' p = 'root'

scrapy爬取豆瓣电影top250

1 # -*- coding: utf-8 -*- 2 # scrapy爬取豆瓣电影top250 3 4 import scrapy 5 from douban.items import DoubanItem 6 7 8 class DoubanspiderSpider(scrapy.Spider): 9 name = "doubanspider" 10 # allowed_domains = ["movie.douban.com/top250"]注意这里的主页限制

爬取猫眼电影

爬去猫眼电影正字热映电影榜单的前五页: #爬取猫眼电影正在热映前5面的所有电影 import requests from requests import RequestException import re def get_one_page(url): header ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.8

14-Requests+正则表达式爬取猫眼电影

'''Requests+正则表达式爬取猫眼电影TOP100''''''流程框架:抓去单页内容:利用requests请求目标站点,得到单个网页HTML代码,返回结果.正则表达式分析:根据HTML代码分析得到电影的名称.主演.上映时间.评分.图片链接等信息.保存至文件:通过文件的形式保存结果,每一部电影一个结果一行Json字符串.开启循环及多线程:对多页内容遍历,开启多线程提高抓取速度.'''import requestsimport refrom requests.exceptions impor

Python使用asyncio+aiohttp异步爬取猫眼电影专业版

asyncio是从pytohn3.4开始添加到标准库中的一个强大的异步并发库,可以很好地解决python中高并发的问题,入门学习可以参考官方文档 并发访问能极大的提高爬虫的性能,但是requests访问网页是阻塞的,无法并发,所以我们需要一个更牛逼的库 aiohttp ,它的用法与requests相似,可以看成是异步版的requests,下面通过实战爬取猫眼电影专业版来熟悉它们的使用: 1. 分析 分析网页源代码发现猫眼专业版是一个动态网页,其中的数据都是后台传送的,打开F12调试工具,再刷新网

# [爬虫Demo] pyquery+csv爬取猫眼电影top100

目录 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 代码君 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 https://maoyan.com/board/4?offset=0 翻页操作只会改变offset偏移量,每部电影的信息都在dd标签内,使用pyquery库中的css选择器直接解析页面 代码君 css选择器直接选择和使用find()方法的区别:find()用于选择子节点,因此限定了选择的区域,速度可能要快些,直接传入''选择器可能

正则表达式爬取猫眼电影

正则表达式爬取猫眼电影Top100 import requests import re,json from multiprocessing import Pool def get_one_page(url): response = requests.get(url) return response.text def parse_one_page(html): pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?dat

利用Scrapy爬取1905电影网

本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例--爬取1905电影网 相关资料 Scrapy 爬虫介绍 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改.它也提供了多种类型爬虫的基类,如BaseSpider.sitemap爬虫等,最