课堂笔记爬虫精进beautifu实践_第1页
课堂笔记爬虫精进beautifu实践_第2页
课堂笔记爬虫精进beautifu实践_第3页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(1) 标站:(2) 站协议:标站的爬取 );(标站 + robots.txt 可查看(3)项标:爬取 名、URL、 基本信息和 评分信息。(1)确定数据位置 名、 基本信息和 评分信息详情、URL均在 html 上; 获取数据 requests.get() ; 数据 Beaut ifulSoup。(2)提取数据 【windows】:在的空处点击右键,然后选择“检查”(快捷式是ctrl+shift+i), 再在 Elements 按 ctrl+f;【mac】:在的空处点击右键,然后选择“检查”(快捷键 command + option + I(写i)); 点击【检查】左上的 “标” 按钮,再点

2、击后右侧想要获取的内容可以 到该内容对应的 ; 如此,我们就 到了 名的所在位置,a 内的文本,甚至还顺带找到了详情页URL的所在位置。如上图,a 里有属性href,其值是ect /27010768/。点击它,你会跳转到这部 的详情页: 所以到时候,我们可以去提取a 。接着,先用t ext 拿到它的文本,再使用href获取到URL。 当我们的光标放在这个p 上时,这个p 里包含了 这部 所有的基本信息,包含了上映时间、演员、导演等信息,即:2019-05-21(戛纳 节) / 2019-05-30(韩国) / 宋康昊 / 李善均 / 赵汝贞 / 崔宇植 / 朴素丹 / 张慧珍 / 玄升玟 /

3、郑贤俊 / 朴叙俊 / 李 静恩 / 朴明勋 / 朴根祿 / 郑益汉 / 李东勇 / 李柱亨 / 韩国 / 奉俊昊 / 132分钟 / / 剧情 / 喜剧 / 奉俊昊. 这些都是p 里的纯文本。这个p 的属性是class="pl" 根据 名、URL、 基本信息和 评分信息的路径,我们可以知道这四者的最小共同父级 是:div class="pl2"。request s.get () 获取数据,Beaut ifulSoup 数据。1234567891011121314 名是a 内的文本,URL是a 里属性href的值, 基本信息藏身于p class=&quo

4、t;pl", 评分信息藏身于div class="st ar clearx"。最后,它们三者的最小共同父级 ,是div class="pl2"。 根据我们【过程分析】中所有菜谱的共同 class = ,我们 nd all 获取所有菜谱(nd all 获取后返回的是个列表),下我们提取出第0个级 中的第0个<a>,并输出菜名和URL: 具体思路:1、先爬取所有的最小父级 div class="pl2",然后 每一个父级 ,想办法提取里面的 名、URL、 基本信息和 的评价信息。2、分别提取所有的 名、URL、 基本

5、信息和 的评价信息。然后让名、URL、 基本信息和 评分信息给一一对应起来(这并不复杂,第0个 名,对应第0个URL,对应第0组 基本信息,对应第0组 评分信息,按顺序走即可)。1234567891011121314import requests # requests库from bs4 import BeautifulSoup # BeautifulSoup库headers = 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch

6、rome/79.0.3945.79 Safari/537.36'res_movies = requests.get('',headers=headers) # 获取数据bs_movies = BeautifulSoup(res_movies.text, 'html.parser') # 数据list_movies = bs_movies.find_all('div', class_='pl2') # 查找最小父级import requests # requests库from bs4 import BeautifulSoup

7、 # BeautifulSoup库headers = 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36'res_movies = requests.get('',headers=headers) # 获取数据bs_movies = BeautifulSoup(res_movies.text, 'html.parser') #

8、数据print(bs_movies) # 打印 结果15161. 提取菜名依旧是根据我们的内容 我们的 ,可以找到菜名是在我们的 a 中,再 text 取到该 对应的菜名。12346578910111321415161. 提取 URL我们发现在 a 后的 href 有我们需要的 ,但是 整,所以需要拼接后才能得到我们要的菜谱 URL。12346578910import requests # requests库from bs4 import BeautifulSoup # BeautifulSoup库res_foods = requests.get('')# 获取数据bs_foo

9、ds = BeautifulSoup(res_foods.text,'html.parser') # 数据list_foods = bs_foods.find_all('div',class_='info pure-u')import requests # requests库from bs4 import BeautifulSoup # BeautifulSoup库res_foods = requests.get('')# 获取数据bs_foods = BeautifulSoup(res_foods.text,'html.

10、parser') # 数据list_foods = bs_foods.find_all('div',class_='info pure-u') # 查找最小父级tag_a = list_foods0.find('a') # 提取第0个父级 中的<a> print(tag_a.text17:-13)# 输出菜名,使用17:-13切掉了多余的信息print(list_movies) # 打印最小父级111231415161. 提取材我们可以看到我们的材是在 p 中,但是只靠这个是不够的的,所以我们要精确取值, 可以看到材对应的 c

11、lass 属性为 ing ellipsis。1234567891011132141516171812345678910import requests # requests库from bs4 import BeautifulSoup # BeautifulSoup库res_foods = requests.get('')# 获取数据bs_foods = BeautifulSoup(res_foods.text,'html.parser') # 数据list_foods = bs_foods.find_all('div',class_='in

12、fo pure-u')import requests # requests库from bs4 import BeautifulSoup # BeautifulSoup库res_foods = requests.get('')# 获取数据bs_foods = BeautifulSoup(res_foods.text,'html.parser') # 数据list_foods = bs_foods.find_all('div',class_='info pure-u') # 查找最小父级tag_p = list_foods0.

13、find('p',class_='ing ellipsis') # 提取第0个父级 中的<p>ingredients = tag_p.text1:-1 # 食材,使用1:-1切掉了多余的信息print(ingredients)# 打印食材# 查找最小父级tag_a = list_foods0.find('a') # 提取第0个父级 中的<a>print(''+tag_a'href')# 拼接后输出URL1112314156178192021222324252627282930132创建个空列

14、表,启动循环,循环度等于 <p> 的总数我们可以借助range(len() 语法。12345678910112131415161718192021222324import requests # requests库from bs4 import BeautifulSoup # BeautifulSoup库res_foods = requests.get('')# 获取数据bs_foods = BeautifulSoup(res_foods.text,'html.parser') # 数据tag_name = bs_foods.find_all('

15、;p',class_='name') # 查找包含菜名和URL的<p>tag_ingredients = bs_foods.find_all('p',class_='ing ellipsis') # 查找包含食材的<p>list_all = # 创建一个空列表,用于 信息for x in range(len(tag_name):# 启动一个循环,次数等于菜名的数量list_food = tag_namex.text18:-14,tag_namex.find('a') 'href',t

16、ag_ingredientsx.text1:-1# 提取信息,封装为列表。注意此处18:-14切片和之前不同,是因为此处使用的是<p>,而之前是<a> list_all.append(list_food) # 将信息添加进list_allprint(list_all) # 打印# 查找最小父级list_all = # 创建一个空列表,用于 信息for food in list_foods: tag_a = food.find('a') # 提取第0个父级 中的<a>name = tag_a.text17:-13# 菜名,使用17:-13切掉了多余的信息URL = &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论