找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2144|回复: 3

[求助] 求大神帮忙解决下这个问题

0

主题

1

帖子

1

积分

贫民

积分
1
mint 发表于 2018-12-25 11:06:58 | 显示全部楼层 |阅读模式
本帖最后由 mint 于 2018-12-25 11:14 编辑

  1. import requests
  2. from requests.excepti** import RequestException as RE
  3. import re

  4. def get_one_page(url):
  5.     try:
  6.         resp**e = requests.get(url)
  7.         if resp**e.status_code == 200:
  8.             return resp**e.text
  9.         else:
  10.             return None
  11.     except RE:
  12.         return None

  13. def parse_one_page(html):
  14.     partten = re.compile('<strong>.*?href="(.*?)".*?title>(.*?)</a>.*?<strong>.*?<a.*?<p>.*?href="(.*?)".*?="(.*?)"'
  15.                          +'.*?</td>',re.S)
  16.     items = re.findall(partten,html)
  17.     for item in items:
  18.         yield {
  19.             "歌曲地址": 'https://www.xiami.com'+item[0],       #加不加‘https:...’都报错
  20.             "歌曲名称": item[1],
  21.             "歌手": item[3],
  22.             "艺人介绍": 'https://www.xiami.com'+item[2]

  23.         }

  24. def main():
  25.     url = 'https://www.xiami.com/chart'
  26.     html = get_one_page(url)
  27.     for item in parse_one_page(html):
  28.         print(item)


  29. if __name__ == '__main__':
  30.     main()
复制代码
求大神帮忙解决,我是新手,刚开始联系写爬虫,这是我练习正则表达式的一个程序,爬取了豆瓣读书的排行榜,正常运行,后来我看到虾米音乐有个音乐排行榜,就想把歌曲链接,歌手等信息爬下来,只改了url链接和正则表达式,就出现这个问题了,请大神帮忙解决下

return _compile(pattern, flags).findall(string)
TypeError: expected string or bytes-like object

PS:查了下,让  items = re.findall(partten,html) 改成  items = re.findall(partten,html.text) 还是报错
回复

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
mchengd 发表于 2018-12-27 11:26:40 | 显示全部楼层
本帖最后由 mchengd 于 2018-12-27 11:30 编辑

html = get_one_page(url)
html返回的是None,所以有问题,你需要修改get_one_page函数;或者判断下html是否None然后另做处理
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
smith6036 发表于 2018-12-27 16:42:19 | 显示全部楼层
应该是表头的原因,requests.get的时候你加个表头伪装一下就可以了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
mint  楼主| 发表于 2018-12-31 15:15:39 | 显示全部楼层
你们都是大神,一句话就说对了,果真需要headers,可惜我提取的信息结果是乱码,查了下好像是json解析之类的问题,搞不懂,反正是练习正则表达式,换个酷我音乐把榜单信息抓下来了,等以后再研究其他问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表