简单爬虫总结

 URL:

 URL主要有三部分组成:

 (1)协议,常见的协议有http,https,ftp,file(访问本地文件夹),ed2k(电驴的专用链接)等等。

 (2)存放资源的服务器的域名系统(DNS)主机名或者IP地址(有时候包含端口号,各种传输协议都有默认的端口号)

 (3)主机资源的具体地址,如目录和文件名等

 注意:

第一部分和第二部分用"://"符号隔开的,

第二部分和第三部分用"/"符号隔开的,

第一部分和第二部分是不可缺少的,第三部分有时候可以省略。

urllib:

 爬取网页:

import urllib.request

response = urllib.request.urlopen("http://www.baidu.com")
html = response.read().decode("utf-8")
print(html)

下载一只小猫:

import urllib.request

# req = urllib.request.Request("url")
# response = urllib.request.urlopen(req)
response = urllib.request.urlopen("url")
html = response.read().decode("utf-8")
with open("name.jpg",'wb') as f:
    f.write(html)

 注意:

(1)urlopen的url参数即可以是一个字符串也可以是一个Request对象,如果你传入是一个字符串,那么Python是会默认帮你

把目标字符转换成Request对象,然后在传入urlopen函数,如上述注释代码所示。

 (2)urlopen实际上返回的是一个类文件对象,因此你可以用read()方法来读取内容,他还有以下三个函数会用到。

  1.geturl()--返回请求的url

  2.info()--返回一个httplib,HTTPMessage对象,包含远程服务器返回的头信息。

  3.getcode()--返回HTTP状态码

隐藏身份:

 UserAgent:

  对于一些服务器来说是不愿意让爬虫进行爬去的,这样服务器的压力就会增加,服务器一般是通过User-Agent来识别 的,普通浏览器会通过该内容向访问网站提供你所使用的浏览器类型、操作系统、浏览器内核等信息的标识。

 修改User-Agent:

  实例化Request对象的时候将headers参数传进去或者通过add_header()方法往Request对象添加headers,如:

import urllib.request
import urllib.parse


head={}
head["Referer"] = ""
head["User-Agent"] = ""
data = {}
data["type"] = ""
data["keyform"] = ""
data = urllib.parse.urlencode(data).encode("utf-8")

req = urllib.request.Request(url,data,head)
# req = urllib.request.Request(url,data)
# req.add_header('Referer','')
# req.add_header('User-Agent','')
urllib.request.urlopen(req)

注意:如果长时间靠修改User-Agent进行抓取,那么一个IP短时间内连续进行网页的访问,很可能会被服务

器识别是机器抓取,所以,这里有两种策略可供选择:

 第一种就是延迟提交的时间,但是这样会使得工作效率低下。

 第二种策略就是使用代理。

 使用代理:

  使用代理IP,服务器看到的是代理IP地址,而不是你自己的IP地址。

proxy_support = urllib.request.ProxyHandler({'http':'211.138.2.4:80'})

  参数是一个字典,字典的键是代理的类型,字典的值就是代理的IP地址和对应的端口号。

opener = urllib.request.build_opener(proxy_support)

opener可以看作是一个私人订制,当使用urlopen()函数打开一个网页的时候,你就是使用默认的opener在工作

所以这里使用build_opener()函数创建了一个属于我们自己私人定制的opener

urllib.request.install_opener(opener)

这里将制定好的opener安装到系统中,这是一劳永逸的做法

因为在此之后,你只需要使用普通的urlopen()函数,就是以定制好的opener进行工作的。

       如果你不想替换掉默认的opener,你也可以每次特殊需要的时候,用opener.open()的方法来打开网页。  

         iplist = input("请输入IP:").split(sep=";")
         ip = random.choice(iplist) #随机使用IPiplist = input("请输入IP:").split(sep=";")
         ip = random.choice(iplist) #随机使用IP

Beautiful Soup:

 安装Beautiful Soup:

 打开cmd,执行命令: python3 -m pip install BeautifulSoup4

 在IDE下from bs4 import BeautifulSoup,没有报错说明安装成功

        使用Beautiful Soup:

from bs4 import BeautifulSoup

html = response.read().decode('utf-8')
soup = BeautifulSoup(html,'html.parser')
for each in soup.find_all(""):
    print(each)

正则表达式:

 网上查资料

猜你喜欢

转载自blog.csdn.net/DuanKun7323/article/details/79179167
今日推荐