赞
踩
我决定使用requests和BeautifulSoup两个库的功能从猫眼专业版(具体网址:影片总票房排行榜 (maoyan.com))上面获取数据。
在很多的网站都会设置反爬虫的功能,一般情况下我们编写的程序发出的请求会被网址拒绝,但浏览器就不会啦。所以我们要将我们编写的程序伪装成浏览器,让网站同意我们的请求。这个时候就要在我们的程序中设置一个User-Agent,将程序发出的请求伪装成浏览器的。
以下是获取User-Agent的方法:
本人是参考B站的老师讲授的代码【Python爬虫案例】批量爬取电影票房+数据分析可视化_哔哩哔哩_bilibili
- import requests
- from bs4 import BeautifulSoup
-
- headers = {
- "User-Agent" :"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.42"
- } #将程序发出的请求伪装成浏览器
- text = requests.get("https://piaofang.maoyan.com/rankings/year",headers=headers).text
- #通过requests请求到电影票房的网页
- main_page = BeautifulSoup(text,"html.parser")#后面这个是html的解析器
- #使用BeautifulSoup对text进行解析
- div = main_page.find("div",attrs={"id": "ranks-list"})
- #找到名为div且id为ranks-list的所有标签
- f = open("MovieData.csv", mode="a")
- #创建一个名为MovieData.csv的文件,放在变量f中,且可以在其后面直接追加文字
- uls = div.find_all('ul')
- #找到div元素中所有名为ul的元素,并存储在uls变量中
- for ul in uls : #对uls中的元素进行遍历
- lst1 = ul.find_all("li", attrs={"class": "col1"})#找到ul中所有类名为col1的Li元素,并储存在lst1
- lst2 = ul.find_all("li", attrs={"class": "col2"})#找到ul中所有类名为col2的Li元素,并储存在lst2
- lst3 = ul.find_all("li", attrs={"class": "col3"})#找到ul中所有类名为col3的Li元素,并储存在lst3
- lst4 = ul.find_all("li", attrs={"class": "col4"})#找到ul中所有类名为col4的Li元素,并储存在lst4
- for li in lst1 : #对lst1中的元素进行遍历
- ps = li.find_all("p") #找到ps中所有p元素,并储存在ps
- for p in ps : #对ps中的元素进行遍历
- f.write(p.text.strip()) #将p标签中的文本去除分隔符后写进f中的文件
- f.write(",") #在f文件后面追加,
- for li in lst2: #对lst2中的元素进行遍历
- f.write(li.text.strip()) #将li标签中的文本去除分隔符后写进f中的文件
- f.write(",") #在f文件后面追加,
- for li in lst3: #对lst3中的元素进行遍历
- f.write(li.text.strip()) #将li标签中的文本去除分隔符后写进f中的文件
- f.write(",") #在f文件后面追加,
- for li in lst4: #对lst4中的元素进行遍历
- f.write(li.text.strip()) #将li标签中的文本去除分隔符后写进f中的文件
- f.write(",") #在f文件后面追加,
- f.write("\n") #在f文件后面追加换行符
该文章仅作为本人的学习记录,如有错误,请各位大佬指出。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。