这篇博客是作者入门python爬虫的笔记,仅供参考,如有错误请指正。
1.爬静态页面(百度首页 http://www.baidu.com),IDE为pycharm
# -*- coding: utf-8 -*- import urllib2 def base(): #定义url,然后调用urlopen函数打开,读取结果存在data变量中 url = "http://www.baidu.com" data = urllib2.urlopen(url) #将data的内容存在文件中 file = open("D://demo.html", "w") file.write(data.read()) if __name__ == '__main__': base()
本段代码用最基本的urlopen函数爬取网页内容,对于一些有反爬措施的网站,我们采用添加headers伪装浏览器的方法爬取,如CSDN就有反爬机制。
2.伪装浏览器,此处使用的方法是添加header中的user-agent字段信息,具体请看浏览器F12调试功能下,网络选项中的请求头,作者使用的是火狐浏览器
# -*- coding: utf-8 -*- import random import urllib2 from urllib import urlretrieve, urlcleanup def openurl(): url = "http://blog.csdn.net/szc889988/article/details/56331844" #下面是一个user-agent的数组 user_agents = [ 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11', 'Opera/9.25 (Windows NT 5.1; U; en)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)', 'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12', 'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9', "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7", "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 ", ] opener = urllib2.build_opener() agent = random.choice(user_agents) opener.addheaders = [("User-Agent", agent)] res = opener.open(url) htmlSource = res.read() fhandle = open("D://CSDN.html", "w") fhandle.write(htmlSource) print(htmlSource) if __name__ == '__main__': openurl()