Python爬虫学习(一)

环境:Mac OSX

终端工具:iTerm2

 

1. 显示网页源码

  •  以baidu为例:
import urllib2

request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()

 

2. 有关headers

#爬虫中添加headers为了模拟浏览器的工作,否则有的页面不允许直接访问#

 

  • MacOS下查看headers方法:

   Chrome:视图-开发者-开发者工具,右侧点击Network,然后单击url(bbs.byr.cn),右边选Headers即可

   

    我们下面要用到User-Agent项,服务器往往会通过该值来判断是否是浏览器发起的请求。

  • 加入headers的爬虫示例:
#coding:utf-8
import urllib
import urllib2

url = 'http://bbs.byr.cn/index'
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
values = {'username' : 'xxxxxx',  'password' : '6666666' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
page = response.read()
print (page.decode('gbk').encode('utf-8'))

需要注意编码问题:Python默认编码为ASCII,所以要在前面加上#coding:utf-8。查看网页html源码可以发现<meta>标签中编码属性为GBK,所以print之前需要decode+encode操作,以防汉字显示乱码。

汉字乱码问题可参见-----将python2中汉字会出现乱码的事一次性说清楚

3.正则表达式相关

Python中,数量词默认为贪婪匹配,即尽可能多的匹配字符。

反斜杠、Re问题可参见-----伯乐在线-崔庆才-正则表达式

posted @ 2016-05-20 12:32  Aston_gg  阅读(154)  评论(0)    收藏  举报