鱼C论坛

 找回密码
 立即注册
查看: 1235|回复: 4

小爬虫之链家网一直都有问题不知道为什么,救救孩子

[复制链接]
发表于 2019-10-28 16:38:32 | 显示全部楼层 |阅读模式

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

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

x
import requests
import re


url='https://hf.lianjia.com/ershoufang/pg1'   #链家网第一页
headers={'User-Agent':'Mozilla/5.0'}

respone=requests.get(url,headers=headers)
respone.encoding='utf-8'
s=respone.text     #将爬取到的页面赋值给s
#print(s)

p=re.compile('<div class="info clear">.*?</div>(.*?)<div class="positionInfo">.*?<span class="taxfreen">.*?</div>(.*?)<div class="totalPrice">',re.S)  #正则匹配二手房的小区和价格
print(re.findall(s))


#这是爬取链家网第一页的房源和价格  写出正则表达式之后,一直出现这个错误  TypeError: findall() missing 1 required positional argument: 'string'   但是findall里面明显给了s,s也是个字符串啊,为啥啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-28 16:52:04 | 显示全部楼层
按照你的想法最后应该print(p.findall(s)) 或者 print(re.findall(p,s))吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-28 20:57:01 | 显示全部楼层
你把编译好的正则表达式赋给了p,那么就用p.findall(s),就会把所有小括号括起来的组给归为一个可迭代对象,没有小括号,就把所有找到的结果归为一个可迭代对象,然后你的re.compile(r'')最好这样写,用原生(row)字符串,就是前面加个小r,不然很多反斜杠的地方会出错~~~~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-28 21:01:17 | 显示全部楼层
lovepipi 发表于 2019-10-28 20:57
你把编译好的正则表达式赋给了p,那么就用p.findall(s),就会把所有小括号括起来的组给归为一个可迭代对象 ...

三克油  知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-30 12:22:29 | 显示全部楼层
tt520 发表于 2019-10-28 21:01
三克油  知道了

不喜欢你的写法,感觉太乱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 04:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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