2021-08-04

今天又爬取一些资源,仅仅是自己会动态翻页爬取,中间遇到一些问题记录下来,仅供之后学习参考,如有错误之处,请指出~

import requests
import re
import csv
for start in range(0,51,25):
    print('------------------正在抓取第{}页数据-----------------------'.format(start))
    url="https://movie.XXXX.com/top250?start={}&filter=".format(str(start))
    headers={
            
        }
    resp=requests.get(url,headers=headers)
    page_content=resp.text

    #解析数据
    obj=re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)'
                   r'</span>.*?<p class="">.*?<br>(?P<year>.*?)&nbsp.*?<span '
                   r'class="rating_num" property="v:average">(?P<score>.*?)</span>.*?'
                   r'<span>(?P<num>.*?)人评价</span>',re.S)

    """result=obj.finditer(page_content)
    print(type(result))
    for it in result:
        print(it)"""

    #开始匹配

    result=obj.finditer(page_content)
    f=open('douban.csv',mode='a',encoding='utf-8')
    csvwriter=csv.writer(f)
    for it in result:
        """print(it.group("name"))
        print(it.group("score"))
        print(it.group("num"))
        print(it.group("year").strip())#strip()去除空格
    整理成字典的格式"""
        dic=it.groupdict()
        dic['year']=dic['year'].strip()
        csvwriter.writerow(dic.values())
    f.close()
    print('over!')

1.在for循环中不想默认循环值为1是,就是for start in range(start,end,循环值)如果循环值没有设置则默认为1。
2.因为是翻页,所以我遇到了爬出数据放置在文件中被覆盖掉,原因是在f=open('douban.csv',mode='a',encoding='utf-8')在打开文件上的时候我是用的mode=‘w’,w是写入,所以后边爬下来的数据会覆盖掉之前的数据。a是添加就不会。

好,今天记录的学习内容就是这些。比心心~哈哈哈## 标题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值