python爬虫新手速成教学--基础篇1

CDBmax告知:

扯内些洋式子都没用,直接告诉你咋用。

爬虫教学整体思路

大概的方式就是不整内些花了呼哨的东西,花了呼哨的一带而过,中心思想就是速成,能干活儿,多练活儿才能好。

上图中介绍了四个方法:

1. requests库他主要是用来请求并解析url的HTML的。

2. 正则表达式匹配想要抓取的数据的

3. Beautiful soup也是抓取数据用的一个模块,比正则表达式方便

4. lxml功能跟3差不多,但是个人感觉更灵活 

(这几个库建议1--3组合或者1--4组合)

咱们用这几个库过度,最后要研究的是scrapy这个爬虫框架。

Requests:

get/post 请求方法:

通常用get最多,post他们两个都是请求的功能,最后他俩具体有什么区别以后细唠。

我们用这个库来请求网页所有的html,咱们举个栗子吧。

import requests

result = requests.get("https://www.baidu.com") #用get方法请求url
print(result)  #直接请求返回的是Response
print(type(result))  #打印类型
print(result.status_code)  #返回状态码200是成功的
print(result.encoding) #返回该网站编码
print(result.cookies)

上面这个图片是返回的结果。

 刚开始有些人可能不理解<Response [200]>是啥东西,他其实就是包含了一个url的HTML。当你打开一个网页按F12的时候出现的内些代码就是HTML,这个网页所有的数据都包含在HTML里面。

 当你拿到了Response对象的时候应该怎么把里面的HTML解读出来的,这么干:

print(result.text) #后面加一个.text就把html解读出来了

 如果有的时候用.text他乱码咋办呢,就用这个方法:

print(result.content.decode("utf-8")) #用.content提取内容,在给他用.decode的方法更改编码,
#看这个网站的编码是什么,就在decode后面的括号中写什么,通常都是utf-8或者gbk

不出意外结果基本是一样的 。

爬虫伪装浏览器:

如果你想更高效的爬取一个网站,那么你要把你的爬虫伪装成一个浏览器,这样你被拒绝访问的概率会低很多。

在用get直接请求的时候可以在url后面传入一个header=**伪装成一个浏览器。

import requests
import random

head_connection = ['Keep-Alive', 'close']
head_accept = ['text/html,application/xhtml+xml,*/*']
head_accept_language = ['zh-CN,fr-FR;q=0.5', 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3']
head_user_agent=['Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',
                'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36',
                'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; rv:11.0) like Gecko)',
                'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1',
                'Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3',
                'Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12',
                'Opera/9.27 (Windows NT 5.2; U; zh-cn)',
                'Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0',
                'Opera/8.0 (Macintosh; PPC Mac OS X; U; en)',
                'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6',
                'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)',
                'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)',
                'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)',
                'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Maxthon/4.0.6.2000 Chrome/26.0.1410.43 Safari/537.1 ',
                'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; QQBrowser/7.3.9825.400)',
                'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0 ',
                'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.92 Safari/537.1 LBBROWSER',
                'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; BIDUBrowser 2.x)',
                'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/3.0 Safari/536.11']
heads = {'connection': head_connection[random.randrange(0,len(head_connection))],
             'accept': head_accept[random.randrange(0,len(head_accept))],
             'accept_language': head_accept_language[random.randrange(0, len(head_accept_language))],
             'User-Agent': head_user_agent[random.randrange(0, len(head_user_agent))],
             }


print(requests.get("https://www.baidu.com",headers=heads).text)

上面这一大串代码,看这长其实就是封装了多个浏览器的请求头信息,直接复制就好了,重点在get(),headers=**这里。他把请求头信息同时进行请求了,这时候你假装就是浏览器访问了。 


这篇暂时先写到这里。

如果你在写论文,数据获取,进行统计分析遇到困难的时候,就点开下面这个链接吧:

CDBmax数据国度|数据统计分析服务

猜你喜欢

转载自blog.csdn.net/qq_42452134/article/details/85479901