|
本帖最后由 mint 于 2018-12-25 11:14 编辑
- import requests
- from requests.excepti** import RequestException as RE
- import re
- def get_one_page(url):
- try:
- resp**e = requests.get(url)
- if resp**e.status_code == 200:
- return resp**e.text
- else:
- return None
- except RE:
- return None
- def parse_one_page(html):
- partten = re.compile('<strong>.*?href="(.*?)".*?title>(.*?)</a>.*?<strong>.*?<a.*?<p>.*?href="(.*?)".*?="(.*?)"'
- +'.*?</td>',re.S)
- items = re.findall(partten,html)
- for item in items:
- yield {
- "歌曲地址": 'https://www.xiami.com'+item[0], #加不加‘https:...’都报错
- "歌曲名称": item[1],
- "歌手": item[3],
- "艺人介绍": 'https://www.xiami.com'+item[2]
- }
- def main():
- url = 'https://www.xiami.com/chart'
- html = get_one_page(url)
- for item in parse_one_page(html):
- print(item)
- if __name__ == '__main__':
- 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) 还是报错 |
|