用Python Scrapy爬取某电影网站并存储入mysql
爬取目标:javlib,使用框架Scrapy
首先使用在命令行里
scrapy startproject projectname
和
scrapy genspider spidername
指令创建爬虫。
首先定义items.py
import scrapyclass AvmoItem(scrapy.Item):# define the fields for your item here like:name = scrapy.Field()pic = scrapy.Field()url = scrapy.Field()id_ = scrapy.Field()
这是spiders文件夹中的爬虫文件
spidername.py
# -*- coding: utf-8 -*-
import scrapy
import os
import sys
import re
import urllib.parse
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
import itemsclass JavbusSpider(scrapy.Spider):name = 'javlibrary'allowed_domains = ['www.ja14b.com']start_urls = ['http://www.ja14b.com/cn/vl_genre.php?g=cu']# 爬取目录页def parse(self, response):# 通过xpath指令找到需要爬取的每部电影的url。for av in response.xpath("//div[@class=\"video\"]"):url = urllib.parse.urljoin('http://www.ja14b.com/cn/', av.xpath("a/@href").extract()[0])# 将每部电影的URL发送到parse_movie中进行下一步处理。yield scrapy.Request(url, callback=self.parse_movie)# 检查是否有下一页,如果有下一页,通过parse递归爬取下一页的内容next_page = response.xpath("//*[@class=\"page next\"]")if next_page:next_page_url = "http://www.ja14b.com" + response.xpath("//*[@id=\"rightcolumn\"]/div[3]/a[9]/@href").extract()[0]yield scrapy.Request(next_page_url, callback=self.parse)# 对每一部电影进行分析def parse_movie(self, response):title = response.xpath("//*[@id=\"video_title\"]/h3/a/text()").extract()[0]# 定义新的ITEMitem = items.AvmoItem()# 通过regex获取番号。id_ = re.search("[a-zA-Z]{2,5}-?\d{2,5}", title).group(0)name = title[len(id_)+1:]pic = "http:" + response.xpath("//*[@id=\"video_jacket_img\"]/@src").extract()[0]# 将每部电影的属性添加到item中。item["url"] = response.urlitem["id_"] = id_item["name"] = nameitem["pic"] = picyield item
然后修改pipelines.py
# 通过pymysql连接电脑上的MySQL
import pymysqlclass AvmoPipeline(object):def __init__(self):# 连接databaseself.db = pymysql.connect("localhost", "root", "6966xx511", "testDB", charset='utf8mb4', )# 通过cursor传达sql指令self.cursor = self.db.cursor()# 如果table存在,则drop,防止引发冲突。self.cursor.execute("DROP TABLE IF EXISTS AV")# 创建table av,以番号(id)为primary key,防止重复。sql = """CREATE TABLE AV (id VARCHAR(255) NOT NULL,name VARCHAR(255),pic VARCHAR(255),url VARCHAR(255),magnet VARCHAR(255),PRIMARY KEY (id));"""self.cursor.execute(sql)self.db.commit()def process_item(self, item, spider):# 每次收到一个item即将其加入tableself.cursor.execute("ALTER TABLE AV CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;")sql = """INSERT INTO AV(id,name,pic,url)VALUES ('{}','{}','{}','{}');""".format(item['id_'], item['name'], item['pic'], item['url'])self.cursor.execute(sql)self.db.commit()return itemdef close_spider(self, spider):self.db.close()
这样,一个包含小电影的爬虫就成功了,注意如果Scrapy一直显示403error则需要手动修改settings.py,使ROBOTSTXT_OBEY = False。
用Python Scrapy爬取某电影网站并存储入mysql相关推荐
- python自动爬取更新电影网站_python爬取电影网站信息
一.爬取前提 1)本地安装了mysql数据库 5.6版本 2)安装了Python 2.7 二.爬取内容 电影名称.电影简介.电影图片.电影下载链接 三.爬取逻辑 1)进入电影网列表页, 针对列表的ht ...
- python自动爬取更新电影网站_Python爬虫之—微信实时爬取电影咨询
本文将介绍如何使用爬虫在微信对话中实现实时的电影咨询爬取功能,希望和大家一起来分享" 1. 撩妹起源 俗话说的好:少壮不撩妹,长大徒伤悲啊! 说的很对,但是在这个撩妹的时代,要想成功把到妹, ...
- python爬取豆瓣电影top250_【Python3爬虫教程】Scrapy爬取豆瓣电影TOP250
今天要实现的就是使用是scrapy爬取豆瓣电影TOP250榜单上的电影信息. 步骤如下: 一.爬取单页信息 首先是建立一个scrapy项目,在文件夹中按住shift然后点击鼠标右键,选择在此处打开命令 ...
- Python+scrapy爬取36氪网
Python+Scrapy爬取36氪网新闻 一.准备工作: ①安装python3 ②安装scrapy ③安装docker,用来运行splash,splash是用来提供js渲染服务(pyth ...
- scrapy爬取知名问答网站(解决登录+保存cookies值+爬取问答数据)--完整版完美解决登录问题
菜鸟写Python:scrapy爬取知名问答网站 实战(3) 一.文章开始: 可能看到这篇文章的朋友,大多数都是受慕课网bobby讲师课程的影响,本人也有幸在朋友处了解过这个项目,但是似乎他代码中登录 ...
- Python scrapy爬取京东,百度百科出现乱码,解决方案
Python scrapy爬取京东 百度百科出现乱码 解决方案 十分想念顺店杂可... 抓取百度百科,出现乱码 把页面源码下载下来之后,发现全是乱码,浏览器打开 但是浏览器链接打开就没有乱码 以下是浏 ...
- python爬表情包_教你用Python来爬取表情包网站的所有表情图片
教你用Python来爬取表情包网站的所有表情图片 配置环境 安装Python 开发环境 3X系列 win + R 打开运行,输入cmd,输入python,进行验证是否安装Python win + R ...
- Python爬虫 爬取豆瓣电影TOP250
Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...
- Scrapy爬取1908电影网电影数据
Scrapy爬取1908电影网电影数据 最初是打算直接从豆瓣上爬电影数据的,但编写完一直出现403错误,查了查是豆瓣反爬虫导致了,加了headers也还是一直出现错误,无奈只能转战1908电影网了. ...
最新文章
- 大脑构造图与功能解析_施工技术特辑 | 全套脚手架三维构造图解析
- go语言csv包_golang 写入 csv 文件
- cmd应用基础 扫盲教程
- 嵌入式和非嵌入式_我如何向非技术同事解释词嵌入
- mongodb dsl_具有Java DSL的Spring Integration MongoDB适配器
- Qt配置VS2017
- CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
- Vue3@cli项目结构
- java jexl_一种表达式语言的解析引擎JEXL简单使用
- TrueCrypt加密安全问题
- 【CI/CD】详解自动化开发之CI/CD(持续集成、持续交付、持续部署)
- ZZULIOJ:1000: 从今天开始入坑C语言 JAVA
- 解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\
- GroovyGrails
- ultimate++使用_使用Ultimate Custom Widget个性化您的Android主屏幕
- 美国政府发布《软件供应链安全客户实践建议指南》
- GraalVM - 云原生时代的 Java 笔记
- html div flex,CSS中flex布局详解
- 【分享】ArcGIS 根据DEM生成等高线以及带高程转换为Auto CAD数据
- 包青天人声接电话搞笑版铃声 包青天人声接电话搞笑版手机铃声...