学习Python,可以先从Python爬虫开始哈
首选,爬虫并不是网上传言的那样,动不动就面向铁窗编程等,正规的爬虫还是相当有市场的!!!
而 Python 作为入门简易的语言,语法也相当简洁,用来入门爬虫再好不过了!
学习Python爬虫需要一定的计划和步骤,以下是一个简单的学习计划:
-
学习Python基础知识:首先需要学习Python的基础知识,包括语法、数据类型、函数、模块等。可以通过在线教程或者相关书籍进行学习。
-
学习网络编程基础:爬虫的核心是网络编程,需要了解HTTP协议、URL解析、请求库、响应库等相关知识。推荐使用Python内置的requests库进行网络请求。
-
学习HTML/CSS解析:爬虫需要解析网页内容,因此需要学习HTML/CSS的相关知识。可以使用Python内置的BeautifulSoup库进行HTML/CSS解析。
-
学习数据存储:爬虫获取的数据需要进行存储和管理,可以使用数据库(如MySQL)或者文件(如CSV、JSON)进行存储。
-
实践项目:通过实践项目来巩固所学知识,可以选择一些简单的爬虫项目进行练习,例如爬取某个网站的信息并进行分析。
-
不断学习和提高:爬虫技术在不断发展变化,需要不断学习和跟进最新的技术和工具,例如Scrapy框架、Selenium等。
除了计划,还需要一定的学习步骤
-
学习 Python 基础知识:了解 Python 的基本语法、数据类型、流程控制等基础知识。
-
学习 requests 库:掌握 requests 库的使用,包括发送 HTTP 请求、获取响应内容等。
-
学习 Beautiful Soup 或 lxml 等库:掌握 Beautiful Soup 或 lxml 等库的使用,包括解析 HTML、提取信息等。
-
实践项目:通过实践项目来巩固所学知识,例如爬取某个网站的数据、分析网页结构等。
-
学习数据库和文件操作:了解数据库和文件操作相关知识,以便将爬取的数据保存到本地文件或数据库中。
兵马未动,粮草先行。
我们有了计划和学习步骤之后,就可以着手完成一个个小项目了
一个简单的实战例子
import requests
from bs4 import BeautifulSoup
url = 'https://www.baidu.com'
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
title = soup.title.string
print(title)
当然,从总的爬虫流程来看,爬虫主要分为三部分,请求、解析和存储
1、发送请求
使用 Python 的 requests 库发送 HTTP 请求,获取网页内容。
import requests
url = 'https://www.baidu.com'
response = requests.get(url)
html = response.text
print(html)
2、解析 HTML
使用 Beautiful Soup 或 lxml 等库解析 HTML,提取出需要的信息。
from bs4 import BeautifulSoup
html = """
<div>
<h1>百度一下,你就知道</h1>
<p>百度一下,全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。</p>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
title = soup.title.string
print(title)
3、存储数据
将提取的数据保存到本地文件或数据库中。
import json
data = {
'title': '百度一下,你就知道',
'description': '百度一下,全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。',
'link': 'https://www.baidu.com'
}
with open('data.json', 'w') as f:
json.dump(data, f)
再来来看一个实战例子
众所周知,B站是用来学习的,下面咱们就通过B站来学习~小美女美照的抓取!
废话不多说,直接开干
网页分析
首先咱们先来分析B站网页,现在B站的搜索框里键入我们的关键词
然后我们点击下一页,通过浏览器的 F12 来查看网络请求
网络请求比较多,不过这都难不倒我们老司机了,咱们一眼就定位到了对应的请求
把上面的请求 URL 复制到 postman 当中,直接 send 一下试试
也是没有问题的,那么下面就是来编写代码了。
对于基础代码,咱们可以直接使用 postman 的提示代码
postman 还是很强大,也深知咱们用户的想法,哈哈哈!
import requests
url = "https://api.bilibili.com/x/web-interface/search/type?page=2&page_size=42&platform=pc&keyword=%E5%B0%8F%E7%BE%8E%E5%A5%B3&qv_id=RdBSJVPTX7sckeQMETPhzRB7aqKqU5rk&ad_resource=5654&source_tag=3&search_type=video&dynamic_offset=30"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
编写代码
下面就是改编代码了,我们只需要调整 page
参数,然后再解析响应消息体即可
def fire():
uri = "https://api.bilibili.com/x/web-interface/search/type?page=current_page&page_size=42&platform=pc&keyword=%E5%B0%8F%E7%BE%8E%E5%A5%B3&qv_id=RdBSJVPTX7sckeQMETPhzRB7aqKqU5rk&ad_resource=5654&source_tag=3&search_type=video&dynamic_offset=30"
for i in range(1, 25):
url = uri.replace("current_page", str(i))
response = requests.request("GET", url, headers=headers, data=payload)
datas = response.json()
titles, hrefs = get_hrefs(datas)
download_pic(titles, hrefs)
通过 for
循环来请求 api
地址,再把拿到的响应数据传递给另外两个函数,分别处理响应数据和保存图片。
再来看看下载图片的代码
for i in range(len(hrefs)):
title_t = titles[i].replace('/','').replace(',','').replace('?','')
title_t = title_t.replace(' ','').replace('|','').replace('。','')
title_t = title_t.replace('<emclass="keyword">小美女<em>', '')
title_t = title_t.replace('【', '')
title_t = title_t.replace('】', '')
title_t = title_t.replace('*', '')
filename = '{}{}.jpg'.format(path,title_t)
with open(filename, 'wb') as f:
req = requests.get(url=hrefs[i], headers=headers)
f.write(req.content)
time.sleep(random.uniform(1.5,3.4))
主要是处理 title 当中的特殊字符
最终效果如下
好了,这就是今天分享的全部内容,喜欢就点个赞吧~
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
标签:title,Python,爬虫,replace,学习,初学者,requests From: https://blog.csdn.net/bagell/article/details/137080488