爬虫使用过程中 对于正则表达式的使用的一些体会

通过爬取百度翻译页面

 想获得框中信息

通过测试发现此框会发生动态改变

于是猜测应该是通过Ajax完成数据的上传

于是打开抓包工具

点击Network

打开XHR....

通过分析sug包发现这就是我想要的

并且发现通过改变url后缀kw

可以改变页面内容 参数即kw:word

既可以通过键入单词 获得想要翻译的内容

通过分析content-type可以发现这是一个json类字典

即需引入json库

 想将获取的翻译内容保存到文件 

推荐使用with...as 创建完成后保存关闭释放内存 避免内存积压使cpu占用过多

避免翻译的内容以ascii的形式存在 故需用到ensure_ascii

并通过json.dump进行数据存储

 虽然到这里已经完了 但是打开文件查看单词的翻译未免有些繁琐

含有一些不必要的信息

故应用到正则表达式 引入re库

由于使用with...as关闭了文件 无法读取

故需要再次打开文件 但此时json数据需要以utf-8-sig的形式进行解码

再使用json.load进行读取 (内容本就是json字符串 解码也改变不了其存入的本质)

如何删去不必要的信息并输入到运行程序框中实现即运行即获得翻译结果呢

如下

 由于从网站中获取的响应信息含有""

故无法进行正则表达式的提取 会报如下错

JSONDecodeError: Expecting value: line 1 column 1

所以这里需要使用re.sub(要被替换的,要替换成的,匹配的字符串,替换次数) 进行字符的替换

但json.load()提取出来的非字符串

避免出现expected string or bytes-like object

故需要通过str()

进行强类型转换

才可顺利使用re.sub()

替换完成后可进行正常的提取

通过分析翻译内容可得到此pattern

 

从而提取所有符合条件的子串并打印

以下是效果图

 

若有错误敬请斧正^_^

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 爬虫正则表达式是非常常用的技术,可以帮助我们从网页提取出需要的信息。下面是一些常用的正则表达式符号和方法: 1. ".":匹配任意单个字符,除了换行符。 2. "^":匹配字符串的开始位置。 3. "$":匹配字符串的结束位置。 4. "*":匹配前一个字符出现 0 次或多次。 5. "+":匹配前一个字符出现 1 次或多次。 6. "?":匹配前一个字符出现 0 次或 1 次。 7. "{m}":匹配前一个字符出现 m 次。 8. "{m,n}":匹配前一个字符出现 m 到 n 次。 9. "(...)":分组匹配,匹配括号内的表达式。 10. "[...]":匹配括号内的任意一个字符。 11. "[^...]":匹配不在括号内的任意一个字符。 12. "\d":匹配数字,等同于 [0-9]。 13. "\D":匹配非数字,等同于 [^0-9]。 14. "\s":匹配空白字符,包括空格、制表符、换行符等。 15. "\S":匹配非空白字符。 16. "\w":匹配单词字符,包括字母、数字、下划线。 17. "\W":匹配非单词字符。 在 Python 使用 re 模块进行正则表达式的匹配。常用的方法包括: 1. re.compile(pattern):将正则表达式编译成一个对象,提高匹配效率。 2. re.search(pattern, string):在字符串搜索匹配正则表达式的第一个位置。 3. re.findall(pattern, string):在字符串搜索匹配正则表达式的所有位置,并返回一个列表。 4. re.sub(pattern, repl, string):将字符串所有匹配正则表达式的字符替换为指定的字符串。 以上是一些常用的正则表达式符号和方法,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值