|
10鱼币
本帖最后由 小木船 于 2018-5-16 12:40 编辑
python3.6.3 运行在jupyter notebook,不能得到结果,也没有错误提示;
目标是要爬豆瓣book首页的新书速递的部分信息
- import re
- import requests
- url = 'https://book.douban.com/'
- headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
- content = requests.get(url, headers = headers).text
- pattern = re.compile(r'<li.*?cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?"author">(.*?)</span>.*?"year">(.*?)</span>.*?"publisher">(.*?)</span>.*?</li>', re.S)
- results = re.findall(pattern, content)
- print(results)
复制代码
本帖最后由 久疤K 于 2018-5-16 16:26 编辑
可能你的表达式效率不高,编写太复杂了,因为我运行它并没有死掉,而是一直在运行,但就是没有结果。
我这里是一层一层地解析,能够比较快速地得到答案:
- import re
- import requests
- url = 'https://book.douban.com/'
- headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
- content = requests.get(url, headers = headers).text
- #pattern = re.compile(r'<li.*?cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?"author">(.*?)</span>.*?"year">(.*?)</span>.*?"publisher">(.*?)</span>.*?</li>', re.S)
- p_ul = re.compile(r'<ul class="list-col list-col5 list-express slide-item">(.*?)</ul>', re.S)
- p_li = re.compile(r'<li.*?>(.*?)</li>',re.S)
- p_info = re.compile(r'href="(.*?)".*?title="(.*?)".*?more-meta.*?"author">(.*?)</span>.*?"year">(.*?)</span>.*?"publisher">(.*?)</span>',re.S)
- infos = []
- uls = re.findall(p_ul, content)
- for ul in uls:
- lis = re.findall( p_li, ul)
- for li in lis:
- info = re.findall( p_info, li)[0]
- info = [ x.strip() for x in info ]
- infos.append(info)
- print( len(infos) )
复制代码
|
最佳答案
查看完整内容
可能你的表达式效率不高,编写太复杂了,因为我运行它并没有死掉,而是一直在运行,但就是没有结果。
我这里是一层一层地解析,能够比较快速地得到答案:
|