鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Java  Python/ python正則爬蟲無響應

python正則爬蟲無響應

import requests
import re

content = requests.get('https://book.douban.com/').text
pattern=re.compile('<li.*?"cover".*?href=(.*?)title=(.*?).*"author">(.*?)</div>.*"year">(.*?)</span></li>',re.S)
results = re.findall(pattern, content)
for result in results:
    url, name, author, date = result
    author = re.sub('\s', '', author)
    date = re.sub('\s', '', date)
    print(url, name, author, date)

無響應,大家能告訴我什么原因嗎?謝謝啦。

回答
編輯回答
骨殘心

.*太多了,算法的時間太長

result = re.findall(pattern, content[15000:20000]) # 這個都是秒級的了,何況content長度134383

而且時間復雜度非線性 5000長度,3~4秒 134383長度,估計你跑一天能出來

建議分步正則,一次最好不要超過兩個.*,一步一步匹配出你要的結果

2017年3月18日 18:00
編輯回答
嫑吢丕

我覺得你要是想爬些數(shù)據(jù)的話,還是不要這么爬了,另外豆瓣有api的。

2018年7月19日 19:10
編輯回答
九年囚

我覺得還是正則表達式太復雜了,你試試BeautifulSoup吧

2017年9月20日 07:23