1. import requests
    2. from bs4 import BeautifulSoup
    3. #这是正在修改的方法,方法修改完成,待补充数据处理模块,先尝试获取一页的数据并处理
    4. class DouBan:
    5. def __init__(self):
    6. '''
    7. 初始化方法,当创建一个类的对象的时候,该方法会被自动执行,不需要手动调用
    8. '''
    9. #直接组成url,但是需要拼接成间隔25的url
    10. self.url = "https://movie.douban.com/top250?" + "?start={}&filter="
    11. def get_urls(self,mune):
    12. '''该方法用来构造所有的url'''
    13. # 列表生成式
    14. return [self.url.format(25 * i) for i in range(mune)]
    15. def parse_url(self, url):
    16. '''发送请求并解析数据'''
    17. headers = {
    18. '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'}
    19. response = requests.get(url, headers=headers)
    20. return response.content.decode()
    21. def save_data(self, content, page_count):
    22. '''保存数据'''
    23. #print(self,content,page_count)
    24. file_name = '豆瓣TOP250-第{}页.html'.format(page_count)
    25. with open('./DouBan/' + file_name, 'w', encoding='utf-8') as f:
    26. f.write(content)
    27. def pocessdata(self,HTML):
    28. # 处理数据使用,引入HTML文件,导出想要的数据
    29. print(HTML)
    30. return HTML
    31. def run(self,mun):
    32. '''爬虫程序启动'''
    33. # 1. 构造url地址
    34. request_list = self.get_urls(mun)
    35. # 2. 在地址池中进行遍历,每遍历出一个地址就像该地址发送请求,获取响应得到的内容
    36. for url in request_list:
    37. # 2.1 发送请求
    38. html_content = self.parse_url(url)
    39. # 2.2 二次提取网页中的数据
    40. # 2.3 直接保存网页内容到本地
    41. #在这里解析数据处理数据
    42. date_excel = self.pocessdata(html_content)
    43. #在这里获取到页数,也就是目前网址在所有网址中的索引
    44. page_count = request_list.index(url) + 1
    45. #执行保存程序把索引和需要写入的内容写进去
    46. self.save_data(date_excel, page_count)
    47. if __name__ == '__main__':
    48. # 1.创建爬虫对象
    49. #新增在这里改变页数,你可以输入想要获取的页数
    50. DouBan().run(1)
    51. # 2.启动爬虫程序
    1. #这个地方用来验证
    2. import requests
    3. from bs4 import BeautifulSoup
    4. xhtml = open("豆瓣TOP250-第1页.html")
    5. datehtml = xhtml.read()
    6. xhtml.close()
    7. def pocessdata(HTML):
    8. # 处理数据使用,引入HTML文件,导出想要的数据
    9. soup = BeautifulSoup(HTML,'html.parser')
    10. movie_list = soup.find("span",class_="title")
    11. for link in soup.find_all('span',class_="title"):
    12. print(link.get_text().split())
    13. print()
    14. pocessdata(datehtml)