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

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

def get_one_page(url,headers):    ‘‘‘得到网页源码‘‘‘    try:        #此处必须要传入headers参数,否则因为有些网站服务器的反爬机制,会返回403 Forbidden。参考:https://blog.csdn.net/lv0817/article/details/79185322        response = requests.get(url=url,headers=headers)    #这里要注意,必须使用url=url,headers=headers的格式,否则传参无效。        if response.status_code == 200:            return response.text        return None    #可以查看requests库的官方文档的Exceptions模块,可知RequestException为所有异常的父类或间接父类。    except RequestException:        return None

def parse_one_page(html):    ‘‘‘解析得到的网页源码‘‘‘    #编译正则表达式    pattern = re.compile(‘<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>‘                ‘.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>‘,re.S)    items = re.findall(pattern,html)    #创建一个生成器    for item in items:        yield {            ‘index‘:item[0],            ‘image‘:item[1],            ‘title‘:item[2],            ‘actor‘:item[3].strip()[3:],            ‘time‘:item[4][5:],            ‘score‘:item[5]+item[6]        }

def write_to_file(content):    ‘‘‘解析好的数据写入到文件‘‘‘    with open(‘result.txt‘,‘a‘,encoding=‘utf-8‘) as f:   #‘a‘表示内容可追加。当有中文时,指定编码utf-8防止乱码。        #json.dumps序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii = False。        f.write(json.dumps(content,ensure_ascii=False) + ‘\n‘)    #json.dumps将字典转换为字符串        f.close()

def main(offset):    url = "http://maoyan.com/board/4?offset=" + str(offset)   #点击下一页观察网址可知    headers = {        ‘User-Agent‘: ‘Mozilla/5.0(Macintosh;Intel Mac OS X 10_11_4)AppleWebKit/537.36(KHTML,like Gecko)Chrome/52.0.2743.116 Safari/537.36‘    }    html = get_one_page(url,headers)    #遍历生成器    for item in parse_one_page(html):        print(item)        write_to_file(item)

if __name__ == ‘__main__‘:    # for i in range(10):    #     main(i*10)    #如果要实现秒抓的话,就要使用多进程。    #进程池提供指定数量的进程供用户调用,如果有新的请求提交到进程池,池子还没有满,它就会创建新的进程来执行请求,如果池子满了就先等待。    #构造进程池    pool = Pool()   #声明一个进程池    pool.map(main,[i*10 for i in range(10)])    #第一个参数是方法名,第二个参数是可遍历对象。map方法作用是,拿出可遍历数组中的每一个值当做函数的参数,然后创建一个个的进程,放到进程池里面去运行。

原文地址:https://www.cnblogs.com/wisir/p/10035702.html

时间: 2024-11-06 09:57:57

14-Requests+正则表达式爬取猫眼电影的相关文章

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

代码: import re import json from multiprocessing import Pool import requests from requests.exceptions import RequestException basic_url = 'http://maoyan.com/board/4?offset=%d' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWe

python爬虫知识点总结(九)Requests+正则表达式爬取猫眼电影

一.爬取流程 二.代码演示 #-*- coding: UTF-8 -*- #_author:AlexCthon #mail:[email protected] #date:2018/8/3 import requests from multiprocessing import Pool # 进程池,用来实现秒抓 from requests.exceptions import RequestException import re import json def get_one_page(url):

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

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

1 # encoding:utf-8 2 from requests.exceptions import RequestException 3 import requests 4 import re 5 import json 6 from multiprocessing import Pool 7 8 def get_one_page(url): 9 try: 10 response = requests.get(url) 11 if response.status_code == 200:

正则表达式爬取猫眼电影

正则表达式爬取猫眼电影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

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

需要着重学习的地方:(1)爬取分页数据时,url链接的构建(2)保存json格式数据到文件,中文显示问题(3)线程池的使用(4)正则表达式的写法 import requests from requests.exceptions import RequestException import re import json from multiprocessing import Pool # 抓取单页内容 def get_one_page(url): try: response = requests.

requests库爬取猫眼电影“最受期待榜”榜单 --网络爬虫

目标站点:https://maoyan.com/board/6 # coding:utf8 import requests, re, json from requests.exceptions import RequestException # from multiprocessing import Pool # 获取页面 def get_one_page(url): try: resp = requests.get(url) if resp.status_code == requests.co

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

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

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

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