额,小弟py基础太弱鸡,百度和谷歌也找不到解决办法,故只能发到loc求教屌大的mjj
首先呢,我用以下代码获取一个页面的我需要的数据,这个数据是个数组格式,我获取的就是好几个同属性的数据
- s = re. compile ('{' + '(.*?)' + '}',re.S).findall(str(response.content))
然后数据出来显示
- ['5220, \\n "name": 0\\n ', '2849, \\n "name": 0\\n ', '3630, \\n "name": 0\\n ', '4549, \\n "name": 0\\n ', '4745, \\n "name": 0\\n ', '4745, \\n "name": 0\\n ', '4745, \\n "name": 0\\n ', '4750, \\n "name": 0\\n ', '4750, \\n "name": 0\\n ', '4750, \\n "name": 0\\n ', '4750, \\n "name": 0\\n ', '4870, \\n "name": 0\\n ', '4848, \\n "name": 0\\n ', '4869, \\n "name": 0\\n ', '4929, \\n "name": 0\\n ']
但是我需要整理这个数据,去掉空格,去掉\\n
我尝试过使用replace,但是直接数组都不输出了,所以我也不知道咋办了,只能请教一下大屌们
热议
2楼 Floppy 半小时前
用循环,把列表中的每一个元素都replace一遍
3楼 sRGB 半小时前
你抓的数据可能是二进制 b'str' 然后你显出输出不是原始数据,而且为了显示添加上了转移字符的 \\n
r = requests.get(url=url, headers=headers)
html = r.text
使用 requests 抓取,应该使用 response.text 转换成字符串
你试试修改成response.text 试试
response.text 返回的是一个 unicode 型的文本数据
response.content 返回的是 bytes 型的二进制数据
4楼 战神赵日天 半小时前
用循环,把列表中的每一个元素都replace一遍
大佬,帮人帮到底吧,稍微写几行,让小弟少走点弯路,多谢多谢
5楼 战神赵日天 半小时前
你抓的数据可能是二进制 b'str' 然后你显出输出不是原始数据,而且为了显示添加上了转移字符的 \\n ...
这个就更加高深了,我只想去掉空格,以及\\n,至于数据原始的还是二进制的,可能还不在我目前考虑范畴
6楼 sRGB 半小时前
response.text 与 response.content
在某些情况下来说,response.text 与 response.content 都是来获取response中的数据信息,效果看起来差不多。那么response.text 和 response.content 到底有哪些差别 ? 什么情况下该用 response.text 什么情况下该用 response.content ?
返回的数据类型
response.text 返回的是一个 unicode 型的文本数据
response.content 返回的是 bytes 型的二进制数据
也就是说如果想取文本数据可以通过response.text 如果想取图片,文件,则可以通过 response.content
数据编码
response.content 返回的是二进制响应内容
response.text 则是默认”iso-8859-1”编码,服务器不指定的话是根据网页的响应来猜测编码。
7楼 Floppy 半小时前
loc上没法直接把刚随手写的发给你:您的请求带有不合法参数,已被网站管理员设置拦截!
可能原因:您提交的内容包含危险的攻击请求
如何解决:
1)检查提交内容;
2)如网站托管,请联系空间提供商;
3)普通网站访客,请联系网站管理员;
放图:
8楼 Ausxilia 26分钟前
不用replace了
new_s = [item.strip() for item in s]
如果不行,查下strip的用法,去掉后面不想要的字符
9楼 战神赵日天 26分钟前
你抓的数据可能是二进制 b'str' 然后你显出输出不是原始数据,而且为了显示添加上了转移字符的 \\n
r =...
好滴,感谢大佬指点,这个我的确需要注意,以及后续改进代码
恩,不过就算这样,应该获得的数据还是存在空格的,恩,还是要解决数组内替换空格
另外我有个疑问,能不能直接在获取的时候,就不获取空格以及\n,这样不就行了嘛,有这样的功能嘛
10楼 战神赵日天 25分钟前
loc上没法直接把刚随手写的发给你:您的请求带有不合法参数,已被网站管理员设置拦截!
可能原因:您提交 ...
多谢大佬热心指点,小弟这就去修改测试,多谢多谢
12楼 Floppy 23分钟前
多谢大佬热心指点,小弟这就去修改测试,多谢多谢
我也比较菜,不要管我叫大佬,我对三楼讲的编码一无所知
13楼 战神赵日天 17分钟前
不用replace了
new_s =
额,我只是反馈下测试结果,这个好像不行的,这个好像对于一般的字符串数据是可以的,但是对于数组这种结构好像不行,我测试了strip() 默认以及strip(" ") 加入空格,都是不奏效的。
但是也有一种可能是我用的方式不对吧。。。要不大佬也测试下?
14楼 sRGB 11分钟前
好滴,感谢大佬指点,这个我的确需要注意,以及后续改进代码
恩,不过就算这样,应该获得的数据还是存在 ...
前几天写过一个代码, 使用 \n 分割,一行一行处理
这个函数功能,检查每一行,调用get_url 函数获得url
然后把得到的url 使用set操作,去除重复,然后转换成数组list
# 检查获得多行URL
def check_urls(urls):
ret = [] lines = urls.split('\n')
for line in lines:
url = get_url(line)
if url is not None:
ret.append(url[0])
ret = list(set(ret))
return ret
源码
https://github.com/hongwenjun/ip/blob/main/getmd.py
15楼 战神赵日天 6分钟前
前几天写过一个代码, 使用 \n 分割,一行一行处理
这个函数功能,检查每一行,调用get_url 函数获得url
...
谢谢大佬指点,这个我需要好好消化理解下,因为我是用re. compile获得需要的几个数据块,所以我要想想如何结合你的代码,合成到一起。
16楼 Ausxilia 2分钟前
额,我只是反馈下测试结果,这个好像不行的,这个好像对于一般的字符串数据是可以的,但是对于数组这种结 ...
首先,数组本身是不可修改的
你要做整理,肯定要换成list再来改
如果list 里面套 tuple,里面的tuple同样是不可修改的,也要改成list 再说
申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。
评论前必须登录!
立即登录 注册