好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

正则表达式如何匹配网页里面的汉字?

python做的爬虫,需要提取html中 Apple iPhone 5s (A1530) 16GB 金色 移动联通4G手机 这里面的手机名,因为初学怎么都不能匹配完全, 其中用.*只能匹配到Apple iPhone 5s (A1 请各位指点一下!已经困住两天了!

回复内容: 谢邀。
我又来安利xpath了,放弃正则表达式吧少年。

 //span[@class="pro-title"]/text()
  
没人用BeautifulSoup?
(? ).*?(?= 如果实际情况中有许多不同的“ ”对,就请自行填充前后向断言的内容 你应该看看汉字编码,网页的编码很可能是GBK,然而python是用的utf8,所以绝对匹配不了
怒答,看到不懂正则的还瞎BB,为你感到悲哀!上图!

 ---------------代码区----------------
# coding:utf-8
import re
x=' Apple iPhone 5s (A1530) 16GB 金色 移动联通4G手机   '
xre=r'( )(.+)(   )'
z=re.search(xre,x).group(2)
print z
---------- 
输出区----------------------- C:\Python27\python.exe D:/PycharmProjects/爬虫/test.py Apple iPhone 5s (A1530) 16GB 金色 移动联通4G手机 进程已结束,退出代码0 .+ /sSU 一般情况下可以这样匹配中文,如图:
先用靓汤或正则找到这个节点,再用上面的字符组匹配。
假设这个节点只有一个,用法如下:

  import   re 
 import   requests   as   req 
 from   bs4   import   BeautifulSoup 

 url   =   'xxx' 
 html   =   req  .  get  (  url  )  .  text 
 bs   =   BeautifulSoup  (  html  ) 
 span   =   bs  .  find_all  (  'span'  ,   'pro-title'  ) 

 ''' 
 span = re.findall(' [^ ', html) 
 s = span[0] 
 m = re.findall('[\u4e00-\u9fa5]+', s) 
 ''' 

 s   =   str  (  span  ) 
 m   =   re  .  findall  (  '[  \u4e00  -  \u9fa5  ]+'  ,   s  ) 
 print  (  m  ) 
  
pyquery 会用jquery的话你会爱上它的 换php用 phpQuery CSS Selector

查看更多关于正则表达式如何匹配网页里面的汉字?的详细内容...

  阅读:44次