import requestsfrom bs4 import BeautifulSoup#这是正在修改的方法,方法修改完成,待补充数据处理模块,先尝试获取一页的数据并处理class DouBan: def __init__(self): ''' 初始化方法,当创建一个类的对象的时候,该方法会被自动执行,不需要手动调用 ''' #直接组成url,但是需要拼接成间隔25的url self.url = "https://movie.douban.com/top250?" + "?start={}&filter=" def get_urls(self,mune): '''该方法用来构造所有的url''' # 列表生成式 return [self.url.format(25 * i) for i in range(mune)] def parse_url(self, url): '''发送请求并解析数据''' headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'} response = requests.get(url, headers=headers) return response.content.decode() def save_data(self, content, page_count): '''保存数据''' #print(self,content,page_count) file_name = '豆瓣TOP250-第{}页.html'.format(page_count) with open('./DouBan/' + file_name, 'w', encoding='utf-8') as f: f.write(content) def pocessdata(self,HTML): # 处理数据使用,引入HTML文件,导出想要的数据 print(HTML) return HTML def run(self,mun): '''爬虫程序启动''' # 1. 构造url地址 request_list = self.get_urls(mun) # 2. 在地址池中进行遍历,每遍历出一个地址就像该地址发送请求,获取响应得到的内容 for url in request_list: # 2.1 发送请求 html_content = self.parse_url(url) # 2.2 二次提取网页中的数据 # 2.3 直接保存网页内容到本地 #在这里解析数据处理数据 date_excel = self.pocessdata(html_content) #在这里获取到页数,也就是目前网址在所有网址中的索引 page_count = request_list.index(url) + 1 #执行保存程序把索引和需要写入的内容写进去 self.save_data(date_excel, page_count)if __name__ == '__main__': # 1.创建爬虫对象 #新增在这里改变页数,你可以输入想要获取的页数 DouBan().run(1) # 2.启动爬虫程序
#这个地方用来验证import requestsfrom bs4 import BeautifulSoupxhtml = open("豆瓣TOP250-第1页.html")datehtml = xhtml.read()xhtml.close()def pocessdata(HTML): # 处理数据使用,引入HTML文件,导出想要的数据 soup = BeautifulSoup(HTML,'html.parser') movie_list = soup.find("span",class_="title") for link in soup.find_all('span',class_="title"): print(link.get_text().split()) print()pocessdata(datehtml)