c语言编程笔录

首页 >   > 笔记大全

笔记大全

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,其中的内容和之前存储的内容完全一致。