首页
社区
课程
招聘
python3小白,求助关于正则表达式爬取豆瓣图书,一直卡在那也不报错,不知道问题出在哪???
发表于: 2018-5-2 21:30 3505

python3小白,求助关于正则表达式爬取豆瓣图书,一直卡在那也不报错,不知道问题出在哪???

2018-5-2 21:30
3505
import requests
import re
content = requests.get('https://book.douban.com/').text
#print (content)
pattern = re.compile(r'<li.*?cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?author">(.*?)</span>.*?year">(.*?)</span>.*?</li>', re.S)
results = re.findall(pattern, content)
print (results)
for result in results:
    url, name, author, date = result
    author = re.sub('\s', '', author)
    date = re.sub('\s', '', date)
    print(url, name, author, date)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 129
活跃值: (407)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
能描述清楚。卡在第几行?哪一个函数?
2018-5-3 09:46
0
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有实际测试,但我觉得可能是正则表达式的非贪婪模式引起的。可以试试优化一下表达式
2018-5-3 09:49
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
SevenSir 能描述清楚。卡在第几行?哪一个函数?
这个不知道,因为就一直卡然后啥也没有,估计是re.compile那里在匹配时候出了问题吧!
2018-5-3 10:53
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
junkboy 没有实际测试,但我觉得可能是正则表达式的非贪婪模式引起的。可以试试优化一下表达式
不会优化,能帮忙指点下吗?
2018-5-3 10:54
0
雪    币: 18
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
貌似是  re.findall  的问题,虽然也不知道则么会卡住,不过  html  的话用  pyquery  或  BeautifulSoup  比较方便吧,应该也不会有这个问题
2018-5-3 11:59
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
OxCL 貌似是 re.findall 的问题,虽然也不知道则么会卡住,不过 html 的话用 pyquery 或 BeautifulSoup 比较方便吧,应该也不会有这个问题
据说正则挺重要,所以就想学学,结果刚入门就入坑了
2018-5-3 15:47
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8

import requests
import re
content = requests.get('https://book.douban.com/').text

 

#print (content)
pattern = re.compile(r'<li.*?cover.*?href="(.*?)"\stitle="(.*?)".*?more-meta.*?author">(.*?)</span>.*?year">(.?)</span>.?</li>', re.S)##这里应该要在URL和title之间匹配空格,用\s
results = re.findall(pattern, content)

 

#print(results)
for result in results:
url , name , author , date = result
name = re.sub('\s','',name)
author = re.sub('\s','',author)
date = re.sub('\s','',date)
print(url,name,author,date)

2018-5-9 11:28
0
雪    币: 129
活跃值: (407)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
OtuDeveloper 据说正则挺重要,所以就想学学,结果刚入门就入坑了
如果你是解析html的话,用pyquery吧。很好用。py的正则我觉得挺麻烦的。推荐你一个学习正则的工具:https://deerchao.net/tools/regester/index.htm
含有正则工具和一部分实用的正则教程。你可以先用这个工具去匹配、测试,然后再把正则表达式转换成python的格式即可。
2018-5-9 11:41
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
SevenSir 如果你是解析html的话,用pyquery吧。很好用。py的正则我觉得挺麻烦的。推荐你一个学习正则的工具:https://deerchao.net/tools/regester/index.htm ...
嗯呢,用正则解析html感觉确实挺麻烦,谢谢啦
2018-5-9 13:25
0
游客
登录 | 注册 方可回帖
返回
//