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‘
d = ‘python‘
sql = ‘insert into maoyan_top100 values(%s,%s,%s,%s,%s)‘

url = ‘http://maoyan.com/board/4?offset=‘
pattern = r‘<dd>[\s\S]*?board-index.*?>(\d+)</i>[\s\S]*?<img data-src="(http://.+?)" alt="(.*?)"[\s\S]*?star">[\s]*(.*?)[\s]*?</p>[\s\S]*?releasetime">[\s]*(.*?)[\s]*?</p>‘
myAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"

conn = mysql.connect(user=u, passwd=p, db=d, charset=‘utf8‘, autocommit=True)
cur = conn.cursor()

def write_to_mysql(item):
    cur.executemany(sql,item)

def save_picture(rank,img_url,film_name):
    img_content = urlopen(img_url).read()
    img_name = ‘maoyan_images/‘+rank+‘_‘+film_name+‘.jpg‘
    with open(img_name,‘wb‘) as f:
        f.write(img_content)

def main():
    for i in range(10):
        page_url = url+str(i*10)
        myrequest = request.Request(page_url, headers={‘User-Agent‘: myAgent})
        page_content = urlopen(myrequest).read().decode(‘utf-8‘)
        items = re.findall(pattern,page_content)
        # [(‘1‘, ‘http://p1.meituan.net/movie/[email protected]_220h_1e_1c‘, ‘霸王别姬‘, ‘主演:张国荣,张丰毅,巩俐‘, ‘上映时间:1993-01-01‘)...]
        write_to_mysql(items)
        for item in items:
            save_picture(item[0],item[1],item[2])

if __name__ == ‘__main__‘:
    main()

爬取结果:
1)保存海报图片

2)数据库数据

原文地址:http://blog.51cto.com/13885935/2296519

时间: 2024-11-06 03:32:34

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

python爬取猫眼电影top100

最近想研究下python爬虫,于是就找了些练习项目试试手,熟悉一下,猫眼电影可能就是那种最简单的了. 1 看下猫眼电影的top100页面 分了10页,url为:https://maoyan.com/board/4?offset=0 我们发起请求,得到相应: 我们 我使用的是requests库,这是一个第三方的库. 2 利用正则解析爬取下的页面 当然你也可以使用xpath和bs4. 我们先看一下网页的源代码: 然后根据代码写出要匹配的正则,然后对匹配出来的数据做解析: 3 将抓到的数据写入本地文件

# [爬虫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()用于选择子节点,因此限定了选择的区域,速度可能要快些,直接传入''选择器可能

爬虫实战01——爬取猫眼电影top100榜单

#需求:抓取猫眼电影TOP100的电影名称.时间.评分.图片等信息,提取的结果会以文件的形式保存下来 import requests import time from lxml import etree import json import csv import codecs class MaoYanTop100Spider: #存储电影详情页的url film_page_url_list = [] #存储每个的电影信息 #film_info = {} film_info_list = [] #

python爬虫,爬取猫眼电影top100

import requests from bs4 import BeautifulSoup url_list = [] all_name = [] all_num = [] all_actor = [] all_score = [] class Product_url(): # 这个地方传入的url是 https://maoyan.com/board/4?offset= global url_list def __init__(self, url): self.url = url for x i

python爬取猫眼电影的Top100

1 查看网页结构 (1)确定需要抓取的字段 电影名称 电影主演 电影上映时间 电影评分 (2) 分析页面结构 按住f12------->点击右上角(如下图2)---->鼠标点击需要观察的字段 (3)BeautifulSoup解析源代码并设置过滤属性 1 soup = BeautifulSoup(htmll, 'lxml') 2 Movie_name = soup.find_all('div',class_='movie-item-info') 3 Movie_Score1=soup.find_

使用requests爬取猫眼电影TOP100榜单

Requests是一个很方便的python网络编程库,用官方的话是"非转基因,可以安全食用".里面封装了很多的方法,避免了urllib/urllib2的繁琐. 这一节使用requests库对猫眼电影的TOP100榜进行抓取. 1 获得页面. 首先确定要爬取的url为http://maoyan.com/board/4,通过requests模块,打印出页面的信息 def get_a_page(url): try: response = requests.get(url) if respon

Python爬虫实战之Requests+正则表达式爬取猫眼电影Top100

import requests from requests.exceptions import RequestException import re import json # from multiprocessing import Pool # 测试了下 这里需要自己添加头部 否则得不到网页 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Ge

python应用-爬取猫眼电影top100

import requests import re import json import time from requests.exceptions import RequestException def get_one_page(url): try: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.368

Requwsts+正则表达式爬取猫眼电影Top100

流程框架: 抓取单页内容:利用requests请求目标站点,得到单个网页HTML代码,返回结果. 正则表达式分析:根据HTML代码分析得到电影和名称.主演.上映时间.评分.图片链接等信息. 开启循环及多线程:对多页内容遍历,开启多线程提高抓取速度. 保存至文件:通过文件的形式将内容结果保存,每一部电影一个结果一行Json字符串. 原文地址:https://www.cnblogs.com/779084229yyt/p/9692010.html