python实战之爬虫面试必备题目有哪些
更新时间:2023-09-29从一个网页里爬取信息
爬取信息是网络爬虫最基本的应用之一,下面是一个简单的例子,从一个网页里找出所有链接:
import requests from bs4 import BeautifulSoup url = 'https://www.example.com' req = requests.get(url) soup = BeautifulSoup(req.text, 'html.parser') #找到所有链接 links = [] for link in soup.find_all('a'): links.append(link.get('href')) print(links)
代码的核心是使用requests库获取网页内容,然后用BeautifulSoup库解析HTML代码,最后使用find_all()方法找到所有标签并且获取链接内容。
实现自动登录
在使用爬虫爬取数据时,有些网站需要登录才能获取到需要的数据,这种情形下,我们需要模拟登录,例如:
import requests url = 'https://www.example.com/login' data = {'username': 'your_username', 'password': 'your_password'} req = requests.post(url, data=data) # print(req.status_code)
这个代码片段会发送POST请求到某个网站的登录页面,并且把用户名和密码一起发送过去。在登录成功后,程序会返回一个HTTP状态码(一般是200)。如果状态码是200,则表明登录成功了。
抓取Ajax加载的数据
当一个页面上有滚动条,并且数据是通过JavaScript动态加载时,我们需要使用Selenium库模拟用户操作实现滚动条的自动滑动,并且抓取每一页渲染出来的数据。
from selenium import webdriver import time from bs4 import BeautifulSoup url = 'https://www.example.com/ajax-loaded-page' driver = webdriver.PhantomJS() driver.get(url) scroll_time = 0 while scroll_time < 10: driver.execute_script('window.scrollTo(0, document.documentElement.scrollHeight);') time.sleep(3) scroll_time += 1 soup = BeautifulSoup(driver.page_source, 'html.parser') #获取数据 # ... driver.quit()
代码使用Selenium库实现了滚动条的自动滑动。这里使用PhantomJS作为浏览器,并且把渲染后的HTML代码传给BeautifulSoup解析,这样我们就可以像第一节的代码那样找到需要的数据。
保存爬取的数据
最后一个爬虫的题目是保存爬取的数据,这在很多情况下非常有必要,例如后续可以对数据进行分析或者作为缓存避免重复爬取。下面是一个通用的代码片段,可以将爬取到的数据保存为JSON文件:
import json data = {'key': 'value', 'content': 'something'} file_name = 'data.json' with open(file_name, 'w') as file_obj: json.dump(data, file_obj)
这段代码使用了open()函数打开一个名为data.json的文件,并且使用json.dump()方法将字典存储至文件中。如果需要读取已经保存的数据文件,可以使用json.load()方法,如:
with open(file_name, 'r') as file_obj: loaded_data = json.load(file_obj)
这个代码会返回一个字典对象loaded_data,其中的内容和之前存储的内容完全一致。