Python爬取豆瓣排名报错参考——关键词:换行符|中文乱码|返回空值|正则问题

本文档记录了使用Python进行豆瓣数据爬取时遇到的问题,包括正则表达式因换行符匹配错误、打印时的编码问题以及CSV文件中文乱码的解决方案,提供完整的代码示例和参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、完整代码

二、问题总结

(一)因换行符导致正则匹配错误

(二)编码有问题导致无法打印

(三)csv文件中文乱码


一、完整代码

成功运行的代码(暂未加入爬取完整250条的循环,待更新)供参考:

'''
step1  数据获取_requests
           用开发者工具F12调出页面源代码,观察所需要的数据储存位置
                如果储存在http页面中(服务器加载数据),可直接抓取
                如果储存在其它地方,用抓包工具
           发送请求,获得text版源码
           用print检查无误后,将text版源码赋值存入a

step2  用re提取所需信息_re
           写好正则obj = re.compile('正则规则',re.S)
           赋值result = obj.finditer('a')
           用for in 循环抓取匹配正则的信息
           用print检查无误后,将抓取字段赋值存入dic
            
step3  将数据写入csv  
'''


# step1 数据获取
import requests

url = 'https://movie.douban.com/top250'
headers = {'User-Agent': '马赛克我的信息'}
resp = requests.get(url,headers=headers)
content = resp.text                     # 先用print(resp.t
### 回答1: 可以使用sed命令来进行替换。具体的操作如下: 假设有一个字符串为A|@||@|C,我们需要将其中的空值替换成逗号,即将其替换成A|@|,|@|C。可以使用下面的命令: ``` echo "A|@||@|C" | sed 's/|@||@|/|@|,|@|/g' ``` 执行完上述命令后,输出的结果为A|@|,|@|C。其中,sed命令中的s表示替换操作,|@||@|是需要替换的字符串,|@|,|@|是替换后的字符串,g表示全局替换。 ### 回答2: 在shell脚本中替换分割符"|@|"中的空值可以使用awk命令来实现。具体步骤如下: 1. 使用awk命令,设置分隔符为"|@|"。命令为`awk -F'|@|'`。 2. 在awk命令中,使用gsub函数替换空值为逗号。命令为`gsub(/(^|\|@|)\|@(\||$)/, "\\1,\\2")`。 3. 输入需要替换的字符串为标准输入,可以通过管道符号传递,如`echo "A|@||@|C" | awk -F'|@|' gsub(/(^|\|@|)\|@(\||$)/, "\\1,\\2")`。 通过以上步骤,可以将字符串"A|@||@|C"替换为"A|@|,|@|C"。 ### 回答3: 用shell脚本替换分割符"|@|"中的空值,可以通过使用sed命令实现。具体步骤如下: 1. 创建一个变量,将待替换字符串赋给它: ```shell str="A|@||@|C" ``` 2. 使用sed命令进行替换,将"|@||@|"替换为"|@|,|@|": ```shell new_str="$(echo "$str" | sed 's/|@||@|/|@|,|@|/')" ``` 在这个命令中,通过正则表达式将"|@||@|"匹配,并将其替换为"|@|,|@|"。 3. 打印替换后的结果: ```shell echo "$new_str" ``` 完整的脚本如下: ```shell #!/bin/bash str="A|@||@|C" new_str="$(echo "$str" | sed 's/|@||@|/|@|,|@|/')" echo "$new_str" ``` 运行该脚本,输出结果为"A|@|,|@|C",实现了将空值替换为逗号的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值