鱼C论坛

 找回密码
 立即注册

微信扫一扫,快捷登录!

查看: 143|回复: 4

[已解决]爬取网页中文

[复制链接]
最佳答案
0 
发表于 2019-11-6 20:22:47 | 显示全部楼层 |阅读模式
50鱼币
import re
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36\
         (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}
res=requests.get('https://baike.so.com/doc/1455611-1538882.html',headers=headers)

#想提取res网站中的中文
patten=re.compile("[\u4e00-\u9fa5]",re.S)
titles=patten.findall(res.text)
print(titles)



我想爬取网页中的中文  实际返回 [  ]
求大佬指点
最佳答案
2019-11-6 20:22:48
本帖最后由 XiaoPaiShen 于 2019-11-9 14:37 编辑

两点修改:
1. 使用utf-8 encoding,
2. pattern中加一个'+'

  1. import re
  2. import requests

  3. headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}
  4. res=requests.get('https://baike.so.com/doc/1455611-1538882.html',headers=headers)
  5. res.encoding = 'utf-8'

  6. # 想提取res网站中的中文
  7. patten = re.compile("[\u4e00-\u9fa5]+",re.S)
  8. content = patten.findall(res.text)
  9. print(content)
复制代码

最佳答案

查看完整内容

两点修改: 1. 使用utf-8 encoding, 2. pattern中加一个'+'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
76 
发表于 2019-11-6 20:22:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 XiaoPaiShen 于 2019-11-9 14:37 编辑

两点修改:
1. 使用utf-8 encoding,
2. pattern中加一个'+'

  1. import re
  2. import requests

  3. headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}
  4. res=requests.get('https://baike.so.com/doc/1455611-1538882.html',headers=headers)
  5. res.encoding = 'utf-8'

  6. # 想提取res网站中的中文
  7. patten = re.compile("[\u4e00-\u9fa5]+",re.S)
  8. content = patten.findall(res.text)
  9. print(content)
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
解技 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
42 
发表于 2019-11-7 15:16:38 | 显示全部楼层
本帖最后由 geen 于 2019-11-7 16:34 编辑

已解决,提取纯中文的代码如下:

  1. import requests
  2. from lxml import html
  3. import re

  4. head = {}
  5. head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
  6. head['Cookie'] = 'test_cookie_enable=null; __guid=6491553.1045458896933327200.1573087807406.4932; __DC_sid=6491553.2570914710054801000.1573087807904.5168; keyforsearchbar=%E5%B1%85%E6%B0%91%E8%BA%AB%E4%BB%BD%E8%AF%81%E5%8F%B7%E7%A0%81; refer=https%3A%2F%2Fbaike.so.com%2Fdoc%2F1455611-1538882.html; count=6; __DC_monitor_count=6; __DC_gid=6491553.722538548.1573087807912.1573088650943.12'

  7. res = requests.get('https://baike.so.com/doc/1455611-1538882.html', headers=head)

  8. #想提取res网站中的中文(见图1)
  9. tree = html.fromstring(res.content)
  10. target = tree.xpath('//text()') #提取所有的text()文本内容;
  11. source = str(target)

  12. s = source.encode('utf-8')
  13. s = s.decode('utf-8')
  14. result = re.findall(u"[\u4e00-\u9fa5]+",s,re.S)
  15. print(result)

  16. #提取网页显示的主体文本(见图2)
  17. content = re.search("居民身份证号码,正确.*?避免重复提交",source,re.S)
  18. if content:
  19.     print('flag3',content.group())
复制代码


图1:

                               
登录/注册后可看大图

图2:

                               
登录/注册后可看大图

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
解技 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2019-11-7 15:48:20 | 显示全部楼层
根据汉字编码的范围来找出网页中所有的中文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2 
发表于 2019-11-8 15:58:04 | 显示全部楼层
使用goose模块来提取可以去除掉标签里边的中文。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2019-11-22 20:17

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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