这一篇是对第六篇的一个改进和补充,第六篇里是对百度百科的图片进行保存,对这个代码改一改就可以爬取百度百科中的信息了,浩哥当时想用身高作为一个列子,爬一下试试,当时的代码如下:
import requests
import re
keyword = "周杰伦"
s = requests.Session()
kv={'wd':keyword}
r=s.get("http://www.baidu.com/s",params=kv)
print(r.request.url)
s.headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'
url= r.request.url
r = s.get(url)
b =str( r.content.decode('utf-8'))
pattern = 'href="http://www.baidu.com/.*?".*?百度百科'
bb= re.findall(r'href="(.+)" target', aa)[0]
r1= s.get(bb)
b1 =str( r1.content.decode('utf-8'))
pattern1 = 'class=.*?身.*?高.*?cm'
#pattern1 = 'src="https://.*?.jpg"' 这个注释掉的是原来要爬图片的代码
aa1 = re.findall(pattern1,b1)
运行之后spyder中的结果是这样的
找不到对应的内容,浩哥就把b1的内容放到txt中去检查(我记得以前学vb的时候计算机老师也是这么检查的),发现是有换行的情况:那么需要解决的问题就是如何去掉网页的这个换行符正确的表达如下:
pattern1 = 'class=.*?身.*?高[\s\S]*?cm'
将原本我们省略内容的“.?”改为“[\s\S]?”
这样改过以后就可以查看到身高啦:
附上这个问题的参考链接