Python爬虫入门

Python爬虫入门

其实把网络爬虫抽象开来看,它无外乎包含如下几个步骤

  • 1.模拟请求网页。模拟浏览器,打开目标网站。
  • 2.获取数据。打开网站之后,就可以自动化的获取我们所需要的网站数据。
  • 3.保存数据。拿到数据之后,需要持久化到本地文件或者数据库等存储设备中。

以此网址https://coolapk.com/apk/为例,爬取前5页的应用信息
在这里插入图片描述

一、准备工作

1.导入BeautifulSoup和requests库:

from bs4 import BeautifulSoup
import requests

2.要想获得网页html内容,我们首先需要用requests库的.get()方法向该网页的服务器构造并发送一个请求。requests.get()方法需要传递两个参数,一个是网页的url,在这里显然是https://coolapk.com/apk/;另一个参数是浏览器的header。

点击进入任意一个网页页面,按F12进入开发者模式,点击Network再刷新网页。在Network下的Name中任意点击一个资源,在右侧的Headers版块中下拉到最后,可以看见Request Headers参数列表最后有一个user-agent,其内容就是我们要找的浏览器headers参数值。
在这里插入图片描述
有了url和headers我们就可以利用requests.get()向服务器发送请求了:

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.3161 SLBChan/103'}
url = "https://coolapk.com/apk?p="+str(i)
r = requests.get(url, headers = headers) # 发送get请求,得到response对象

注:GET请求是最原始的HTTP请求
POST请求需要提交一个表单

使用requests.get()方法会先构造一个向服务器请求资源的url对象然后从服务器返回一个包含服务器资源的Response对象,其中包含从服务器返回的所有相关资源(自然也包括我们所需的html)。
获取网页的html内容:

html = r.content.decode('utf-8', 'ignore')

解释:这里r.content返回“Content of the response, in bytes.”即返回HTTP响应内容(Response)的字节形式。因此我们需要使用.decode()方法来解码。这里ignore参数可要可不要,仅仅是为了忽略一些不重要的错误。

my_page = BeautifulSoup(html, 'html.parser') #  这里一定要指定解析器,可以使用默认的 html,也可以使用 lxml。

二、开始爬取数据

这里使用select函数
select函数有多种用法:
1、通过标签选择
2、通过类名查找
3、通过id查找
4、通过【属性】查找,当然也适用于class
这里我们通过class来查找
如何确定想要获取的信息的class名称?
1.在页面中右键”检查“,在跳出来窗口的element中可看到页面html
2.选中页面中想要获取信息的地方,右键检查,element中会自动跳到相应的位置,去查找class名称即可

content1=str(my_page.select(".warpper .app_left .app_left_list .list_app_title"))# 获取应用名称
# select函数作用:找到class属性是panel的标签内的class属性是panel-heading的标签内容
for one1 in re.findall(r'le">(.*?)</p>',content1):# 正则表达式筛选信息
	print(one1)# 依次输出应用名称

关于BeautifulSoup库还有很多函数,这里只是入门教学,不多展示

完整代码

from bs4 import BeautifulSoup
import requests
import re
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.3161 SLBChan/103'}
i=1
while(i<=5):# 循环获得各分页的信息
    url = "https://coolapk.com/apk?p="+str(i)
    r = requests.get(url, headers = headers) # 发送get请求,得到response对象
    html = r.content.decode('utf-8', 'ignore')# 获取网页信息
    my_page = BeautifulSoup(html, 'html.parser') # 解析得到数据
    content1=str(my_page.select(".warpper .app_left .app_left_list .list_app_title"))# 获取应用名称
    for one1 in re.findall(r'le">(.*?)</p>',content1):# 正则表达式筛选信息
        print(one1)# 依次输出应用名称
	i+=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值