鱼C论坛

 找回密码
 立即注册
查看: 3023|回复: 5

求助!爬虫爬取时用re.search只取到了第一次匹配到的数据

[复制链接]
发表于 2017-3-29 13:54:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 萌萌哒的大黑哥 于 2017-3-29 14:21 编辑

各位大佬帮小弟看一看,本人python新手,看了几天小甲鱼老师的视频,做了一个简易的天气查询,但是在从中国天气网上爬取过程中爬取出来的数据出现乱码,而且是部分,大体来说我也不太清楚。。。描述不清。。。简单说一下问题,第一个是乱码问题,第二个是爬取的数据只有部分,只爬取了第一次索引到的数据,各位帮我看一看,谢谢各位了
第一次发帖,有问题希望各位提出,我会认真吸取并改正
python版本是2.7
  1. # -*- coding: utf-8 -*-
  2. import urllib
  3. import re
  4. def gethtml(url):
  5.     page=urllib.urlopen(url)
  6.     html=page.read()
  7.     return html
  8. def getWeather(html):
  9.     dayre=re.search('<h1>(?P<a>.+?)</h1>',html)
  10.     weare=re.search('class="wea">+(?P<b>.+?)+</p>',html)
  11.     cre=re.search('</span>/<i>+(?P<c>.+?)+</i>',html)
  12.     if (dayre):
  13.         a=dayre.group("a")
  14.         print '今天是',a
  15.     if (weare):
  16.         b=weare.group("b")
  17.         print '天气是',b
  18.     if (cre):
  19.         c=cre.group("c")
  20.         print '温度是',c
  21. html=gethtml('http://www.weather.com.cn/weather/101240101.shtml')
  22. getWeather(html)
复制代码

6G01R97IU7W8YK@J8C813SN.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-3-29 13:58:34 | 显示全部楼层
第六行好像应该解码一下html=page.read().decode('gb2312')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-29 14:04:25 | 显示全部楼层
感觉自己像个zz。。。乱码问题已经解决了,原来是手残多打了+号,导致和后面的正则表达式有冲突什么的,删除了+号就完美了剩下的就是数据只有第一次索引到的问题了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-29 14:09:12 | 显示全部楼层
alltolove 发表于 2017-3-29 13:58
第六行好像应该解码一下html=page.read().decode('gb2312')

首先谢谢你的回答
乱码问题已经解决,不过我刚刚尝试了加上decode,但是解码之后,什么都输出不了,是一片空白的,删除了+号之后添加decode,python就报错了,大概是gb2312不能够解码之类的意思
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 193-194: illegal multibyte sequence
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-29 14:14:44 | 显示全部楼层
个人感觉应该是小甲鱼老师用的findall而我用的是search的原因,看了一下资料也没太懂。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-29 22:54:28 | 显示全部楼层
alltolove 发表于 2017-3-29 13:58
第六行好像应该解码一下html=page.read().decode('gb2312')

我刚才又重新打开了一下代码,发现乱码依旧存在,突然想起你的回复,添加了decode('utf-8')发现乱码消失,原来你所提出的乱码问题还是需要decode的存在,多谢你的回答!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 20:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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