请教各路大神


# 导入基本库

import requests
import logging
import re
from urllib.parse import urljoin

# 日志文件格式
logging.basicConfig(level=logging.INFO,format='%(asctime)s-%(levelname)s:%(message)s')

# 基本URL设置

BASE_URL='https://ssr1.scrape.center'
TOTAl_PAGE=10

# 实现一个页面的爬取工作

def scrape_page(url):
    logging.info('scraping %s...',url)
    try:
        response=requests.get(url)
        if response.status_code==200:
            return response.text
        logging.error('get invalid status code %s while scraping %s',response.status_code,url)
    except requests.RequestException:
        logging.error('error occurred while scraoing %s',url,exc_info=True)

# 在scrape_age方法的基础上,我们来定义列表页的爬取方法:
def scrape_index(page):
    index_url=f'{BASE_URL}/page/{page}'
    return scrape_page(index_url)

# 获取HTML代码之后,下一步就是解析列表页,并得到每部电影的详情页URL,实现如下
def parse_index(html):
    pattern=re.compile('<a.*?href="(.*?)".*?class="name">')
    items=re.findall(pattern,html)
    if not items:
        return []
    for item in items:
        detail_url=urljoin(BASE_URL,item)
        logging.info('get detail url %s',detail_url)
        yield detail_url

# 这里我们定义了parse_index方法,他接受一个参数html,即列表页的HTML代码

# 我们对上面的方法串联调用一下,实现如下:
def main():
    for page in range(1,TOTAl_PAGE+1):
        index_html=scrape_index(page)
        detail_urls=parse_index(index_html)
        logging.info('detail urls %s',list(detail_urls))
if __name__ == '__main__':
    main()
这是我按照书上的代码一个一个敲进去的,但是在调试的时候出现:expected string or bytes-like object, got 'NoneType' 异常 ,异常出现的代码区域是: items=re.findall(pattern,html)  不知道为啥。请教各路大神,我究竟错在哪里?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值