Webscraping:如何用字符串列表实现多URL遍历的for循环
遍历字符串列表实现多站点爬取的解决方案
你只需要直接遍历给定的字符串列表即可,不需要额外的方法。以下是两种简洁的实现方式:
方式一:直接在循环中使用元组
把分类字符串元组直接放在in后面,替换掉原代码中的...:
from bs4 import BeautifulSoup import requests import pandas as pd # 补充headers定义,避免请求被目标站点拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } movielist = [] # 直接遍历分类字符串元组 for x in ('action', 'comedy', 'thriller', 'drama', 'sport'): r = requests.get(f'https://movie.com/{x}', headers=headers) soup = BeautifulSoup(r.text, 'html.parser') spiele = soup.find_all('div', {'class': 'row'}) # 补充数据处理逻辑(示例) # for item in spiele: # title = item.find('h3').text.strip() # movielist.append({'category': x, 'title': title})
方式二:先定义列表变量再遍历
如果后续需要修改分类,先将分类存入变量会更便于维护:
from bs4 import BeautifulSoup import requests import pandas as pd headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } movielist = [] # 定义分类列表 movie_categories = ['action', 'comedy', 'thriller', 'drama', 'sport'] # 遍历分类列表 for x in movie_categories: r = requests.get(f'https://movie.com/{x}', headers=headers) soup = BeautifulSoup(r.text, 'html.parser') spiele = soup.find_all('div', {'class': 'row'}) # 补充数据处理逻辑(示例) # for item in spiele: # title = item.find('h3').text.strip() # movielist.append({'category': x, 'title': title})
关键注意事项
- 必须补充
headers定义,否则多数站点会拒绝无标识的请求,示例中的User-Agent可根据自身浏览器信息调整。 - 循环内需补充从
spiele提取目标数据并写入movielist的逻辑,否则脚本仅会完成页面请求,不会留存有效数据。
内容的提问来源于stack exchange,提问作者user17871699
相关产品推荐
相关产品推荐

