Python爬取猫眼TOP排行榜 正则表达式和requests模块的使用

鳄鱼君

发表文章数:642

热门标签

,

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python » Python爬取猫眼TOP排行榜 正则表达式和requests模块的使用

前面我们学习了正则表达式,Requests库,BeauifulSoup库,还有PyQuery库,Urllib库,那么该如何使用呢,完全是看自己爱好,这篇文章就对一些简单的网页来进行信息提取,练习一下

一、采用正则表达式+requests库爬取猫眼电影TOP100榜

分析

  • 1.根据图片分析,我们要采集的所有内容都在标签下,先在中采集排名
  • 2.a标签下第二个img标签是海报地址
  • 3.剩下的内容都在class=”board-item-main”中寻找
import requests
import re
import json
from multiprocessing import Pool  #引入进程池
from requests.exceptions import RequestException
def get_one_url(url): 
    #请求url,加入异常捕捉,一般就是判断状态码,如果不加headers的话会失败
    try:
        headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
        response=requests.get(url,headers=headers)
        if response.status_code==200:
            return response.text
        return '请求错误'
    except RequestException:
        return '请求出错了'
def parse_one_url(html):
    #请求一页数据
    pattern=re.compile('<dd>.*?index.*?">(\d+)</i>'+  #分析正则,把它编译成正则对象
                       '.*?alt=".*?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],  #使用迭代器yield
               'Image':item[1],
               'title':item[2],
               'Author':item[3].strip(),  #这个内容会有空格,两头的空格去掉
               'Time':item[4],
               'Score':item[5]+item[6]}  #评分在两个标签下,所以需要合并下
def write_file(content):
    with open('maoyan.text','a',encoding='utf-8') as f:
        f.write(json.dumps(content,ensure_ascii=False)+'\n')
        f.close()
def main(offset):
    url='https://maoyan.com/board/4?offset='+str(offset) #仔细观察翻页后的网址,发现都是offset=10*range(10)
    html=get_one_url(url)
    for item in parse_one_url(html):
        write_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)])
标签:

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Python爬取猫眼TOP排行榜 正则表达式和requests模块的使用》 发布于2019-12-09

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

9 + 7 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册