自学python,首次接触到爬虫的东西,整个过程全部自己查找资料,熟悉每个模块功能,最终完成了爬取某排名前250电影名。
后面直接展示的是两种方法的完整代码,就懒得分开写了,有坑的地方也有标注,有问题或者学习交流可以找博主公众号微信都行。
代码肯定不是最优,仅供学习使用,不做其他任何非法用途!
Requests模块是一个用于网络请求的模块,主要用来模拟浏览器发请求。
Re模块主要是用来调用正则表达式用的。
Beautiful Soup (简称bs4)是一个可以从HTML或XML文件中提取数据的Python库。提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。
可以处理Excel文件的Python模块有很多,xlwings模块的功能是最齐全的。它不仅能读写和修改,而且能批量处理多个Excel文件。此外,xlwing模块还能与Exce VBA结合使用。
time模块包含用于获取当前时间 、操作时间和日期、从字符串中读取日期、将日期格式化为字符串函数。
Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。
- # 模块安装
- pip install 模块名字
- # 模块调用
- import 模块名字
-
- # 其中beautisoup4调用时用bs4
用正则表达式相对来说没有用标签来的舒服,所以一般建议用第二种方法;
- # coding=utf8
- # @time:2022/5/16 15:12
-
- import random
- import requests,re
-
- # 1.通过正则表达式获取某排名前250的电影名字
-
- url = 'https://movie.XXXX.com/top250'
- ua = {'User-Agent':'Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)'}
- r = requests.get(url,headers=ua)
-
- # print(r.status_code)
- # print(r.text)
-
- pattern = re.compile(r'\<span class="title"\>.*?\<\/span\>')
- print(len(pattern.findall(r.text)))
- # 将获取的排名250的电影写入到excle表格中(爬取电影)
- import requests,bs4,time
- import xlwings as xw
- # 这里有个坑,成功下载beatifulsoup4,但是导入时不能导入beautisoup4,只能写bs4;
-
- app = xw.App(add_book=False,visible=True)
- wb = app.books.open('爬取电影.xlsx')
- sht = wb.sheets['sheet1']
-
- span_list = []
- for page in range(10):
- url = f'https://movie.XXXX.com/top250?start={page*25}' # 加f表示字符串内支持大括号内的python表达式
- ua = {'User-Agent':'Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)'}
- r = requests.get(url,headers=ua)
-
- soup = bs4.BeautifulSoup(r.text,'html.parser')
- # print(soup)
- spans = soup.select('div.hd>a>span:nth-child(1)')
- temp_list = []
- i = 0
-
- for span in spans:
- span_list.append(span.text)
- time.sleep(random.randint(3,5))
-
- sht.range('a2').options(transpose=True).value=span_list
-
-
- wb.save()
- wb.close()
- app.quit()
更多安全分享,请关注【安全info】微信公众号!