我在本学期的python爬虫课获得了许多爬虫知识,对爬虫已经有了一定程度的了解,
1.多实践。在上课的时候要跟着老师演示的步骤自己实践,看会了并不等于自己会操作,一定要自己多动手去实际操作。
2.要基于一定的python基础和大数据应用基础来学习,不能够去死记硬背代码,而是自己平常花时间,一定要多练习,多多敲键盘,
一、网络爬虫的概念
网络爬虫又称网页蜘蛛、网络机器人,是一种按照一定规则。自动请求万维网网站并提取网络数据的程序或脚本。
二、网络爬虫的工作流程
网络爬虫的工作流程通常包括以下几个步骤:获取起始 URL,将 URL 加入待抓取队列,从队列中取出 URL 进行下载,解析 HTML 页面并提取有用信息,将新生成的 URL 加入待抓取队列,并将已经处理过的 URL 标记为已访问。
三、单个网页爬虫代码
爬取豆瓣剧情片排行榜动态内容单页分析
import json
import requests
# 基础URL 不顶事了
#url_base = "https://movie.douban.com/typerank?type_name=%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action="
#经过分析的 动态内容url 才是我们要的结果
url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=20&limit=20"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
'Cookie': 'bid=hCw6GK7T3ko; _pk_id.100001.4cf6=e05499d4844cbfde.1697382901.; __yadk_uid=Y0K7d13OW6bvDo7Rfg4GEhEopPLKv9Vk; ll="118303"; _vwo_uuid_v2=D116B2284E0415DE6F0E8E62C0F3F1B7C|dbd80bec580d442e73cbc806b51e709a; ct=y; douban-fav-remind=1; __utmc=30149280; __utmz=30149280.1698504570.8.7.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=223695111; __utmz=223695111.1698504570.7.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; Hm_lvt_16a14f3002af32bf3a75dfe352478639=1698504600; Hm_lpvt_16a14f3002af32bf3a75dfe352478639=1698504600; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1698558921%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DxUZ2pFPHLGI9UjAZ5BVOkGTqzr9mirz0hM9tSnQ4LgGBvkpYQRkEaveglj68M1Hs%26wd%3D%26eqid%3Dbd0c500a000673f800000006653d1f77%22%5D; __utma=30149280.1569954803.1697382901.1698557082.1698558922.11; __utma=223695111.1379090793.1697382901.1698557082.1698558922.10'
}
# 1、查看url_base返回结果
# result_base = requests.get(url_base, headers=headers)
# # print(result_base.apparent_encoding) # utf-8
# # print(result_base.encoding) # utf-8
# print(result_base.text) # 搜索榜一大哥 肖申克的救赎,查为空
# 2、对比分析F12-NETWORK-FETCH/XHR中的连接
result = requests.get(url, headers=headers)
# print(result.apparent_encoding) # utf-8
# print(result.encoding) # utf-8
#print(result.text) # 获取正常,不看了关掉
#r = json.loads() # 字符串是json、就可以用,常出现在正则表达式提取后
result_json = result.json() # 网页是json的时候,可以直接用
#print(result_json) # 成功转化成json,不看了关掉
movies = []
for i in result_json:
title = i["title"]
date = i["release_date"]
types = i["types"]
score = i["score"]
actors = i["actors"]
movie = {
"title": title,
"date": date,
"type": types,
"score": score,
"actors": actors
}
# print(movie) # 获取正常,不看了关掉
movies.append(movie)
# break # 写循环过程,检验循环取值是否正确,第一个就断开,不看了关掉
print(movies)
四、解析网页数据的技术
python中提供了很多解析网页的技术比如xpth,json,正则表达式等等
一、json技术详解
1.什么是json?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写。它基于JavaScript语言的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。因此,它可以被任何编程语言轻松地读取和解析。
2. json技术在Python爬虫中的应用
在Python爬虫中,我们通常使用requests库来获取网络数据。而requests库返回的响应对象中包含了很多信息,其中就包括了我们需要获取的数据。通过对响应对象进行解析,我们可以快速地获取所需信息。
在这个过程中,json技术就显得尤为重要。由于请求返回的内容往往都是json格式的数据,因此我们需要使用Python内置的json库来解析这些数据。使用json库,我们可以将json格式的数据转换成Python内置类型的数据,如字典、列表等,以便于我们进行进一步的处理和分析。
二、xpath技术详解
1.什么是xpath?
XPath是一种在XML文档中查找信息的语言。它是一种基于树形结构的路径选择语言,可以通过元素和属性进行导航,并且支持通配符、谓语等高级特性。
2. xpath技术在Python爬虫中的应用
在Python爬虫中,我们通常使用lxml库来解析HTML或XML文档。而xpath技术就是lxml库中最重要的部分之一。通过使用xpath语法,我们可以快速地定位到所需信息所在的节点,并获取对应的内容。
在实际应用中,我们通常会将xpath表达式定义为一个字符串,并传递给lxml库进行解析。然后,通过对解析结果进行进一步处理和分析,我们可以快速地获取所需信息。
五、总结心得
我最大的收获就是学会自己看报错信息,观察要爬取的网页结构,并且分析结构,一步一步的进行爬取,虽然也有过许多次的失败,但是没成功爬取一个网页,我就会感到特别骄傲,成就感满满,也许这就是爬虫吸引我的魅力吧。