Python爬虫基础

1.爬虫入门程序

1.什么是爬行动物?

一个自动从互联网上抓取信息的程序,从互联网上为我们抓取有价值的信息。

二、Python爬虫架构

Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。

抓取网页和基本代码:

import urllib2

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

2.爬虫程序添加data、header,然后post请求

一、添加data,header代码如下

import urllib  
import urllib2  

url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
values = {'username' : 'cqc',  'password' : 'XXXX' }  
headers = { 'User-Agent' : user_agent }  
data = urllib.urlencode(values)  
request = urllib2.Request(url, data, headers)  
response = urllib2.urlopen(request)  
page = response.read()

二、POST请求

代码显示如下:

import urllib
import urllib2

values = {"username":"1016903103@qq.com","password":"XXXX"}
data = urllib.urlencode(values) 
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()

我们引入了 urllib 库,现在我们模拟登陆 CSDN,当然上述代码可能登陆不进去,因为 CSDN 还有个流水号的字段,没有设置全,比较复杂在这里就不写上去了,在此只是说明登录的原理。一般的登录网站一般是这种写法。 我们需要定义一个字典,名字为 values,参数我设置了 username 和 password,下面利用 urllib 的 urlencode 方法将字典编码,命名为 data,构建 request 时传入两个参数,url 和 data,运行程序,返回的便是 POST 后呈现的页面内容。 注意上面字典的定义方式还有一种,下面的写法是等价的

三、爬虫程序添加cookie

import cookielib
import urllib2

#创建MozillaCookieJar实例对象
cookie = cookielib.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
#创建请求的request
req = urllib2.Request("http://www.baidu.com")
#利用urllib2的build_opener方法创建一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()

4.正则表达式

Python爬虫基础

一、正则表达式相关理解

(1)数量词的贪婪模式与非贪婪模式

正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少                  数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总                  是尝试匹配尽可能少的字符。例如:正则表达式”ab“如果用于查找”abbbc”,将找到”                        abbb”。而如果使用非贪婪的数量词”ab?”,将找到”a”。注:我们一般使用非贪婪模式来                  提取。

(2)反斜杠问题

与大多数编程语言相同,正则表达式里使用”\“作为转义字符,这就可能造成反斜杠困                      扰。假如你需要匹配文本中的字符”\“,那么使用编程语言表示的正则表达式里将需要4                    个反斜杠”\\\\“:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜                    杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问                   题,这个例子中的正则表达式可以使用r”\\“表示。同样,匹配一个数字的”\\d”可以写成r”                     \d”。有了原生字符串,妈妈也不用担心是不是漏写了反斜杠,写出来的表达式也更直                  观勒。

代码显示如下:

#导入re模块
import re
# 将正则表达式编译成Pattern对象
pattern = re.compile(r'world')
# 使用search()查找匹配的子串,不存在能匹配的子串时将返回None
# 这个例子中使用match()无法成功匹配
match = re.search(pattern,'hello world!')

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年3月15日 下午1:56
下一篇 2022年3月15日 下午2:18

相关推荐