python - Scraper 不会返回所有图像。认为这是因为它不是异步的。如何使 for 循环在一个范围内异步工作?
问题描述
我有一个 Python 脚本,它应该从网站上抓取图像。但由于某种原因,它不会返回所有图像。我怀疑是因为 for 循环不是异步的。但是,如何在定义的范围内使用带有 for 循环的异步函数?
这是代码:
import requests
from bs4 import BeautifulSoup
from os.path import basename
def getdata(url):
r = requests.get(url)
return r.text
for i in range(1, 80):
string_i = str(i)
htmldata = getdata("https://www.coingecko.com/en?page=" + string_i)
soup = BeautifulSoup(htmldata, 'html.parser')
for item1 in soup.select('.coin-icon img'):
link = item1.get('data-src').replace('thumb', 'thumb_2x')
raw_name = item1.get('alt')
name = raw_name[raw_name.find('(') + 1:-1]
with open(basename(name + '.png'), "wb") as f:
f.write(requests.get(link).content)
解决方案
我发现我可以简单地使用模块中的time.sleep()
函数通过在代码的开头和 循环的结尾time
添加来实现异步。import time
time.sleep(1)
推荐阅读
- laravel - 如果在 Laravel 上访问 home '/' 路由,如何自动重定向
- oracle - How can I skip printing an SQL script but still show the DBMS values?
- bash - 当 ssh 到远程主机时,我如何知道远程主机上运行的 bash pid?
- r - t 在 R 中起作用。它不像看起来那样出来
- javascript - 有没有办法用javascript找到字符串来自哪个txt文件?
- php - AJAX:如何将动态创建的表行中的数据保存到数据库中?
- angular - 从 Angular 7 传递数据时,API 获取 0 httpRequest 文件计数
- java - 如何使用具有简单日志语句的 Spock 在 Java 中测试 catch 块
- git - Git 提交失败,因为需要 lint
- php - 如何从数据库中选择多个数据并将其分配到会话中?