问题描述
我正在简单地请求IG帖子以查看全部视图。当我像这样在jupyter中执行此操作时,我没有任何问题:
r = requests.get('https://www.instagram.com/p/CDjX7uAl0zg/?igshid=lcsk0qnidrcz')
r.content
这将返回内容,可以对其进行解析。
当我在Airflow中的任务中执行相同的请求时,该请求不返回任何内容。有什么作用?
from airflow import DAG
from airflow.models import Variable
from airflow.operators.python_operator import Pythonoperator
from datetime import datetime,timedelta
from bs4 import BeautifulSoup
from pandas.io.json import json_normalize
import pandas as pd
import requests
import json
import logging
video_links = ['https://www.instagram.com/p/CDjX7uAl0zg/?igshid=lcsk0qnidrcz']
def get_data(video_links):
for link in video_links:
logging.info(link)
r = requests.get(link)
logging.info('Page...')
logging.info(r.status_code)
logging.info(r.content)
logging.info(type(r.content))
logging.info(r)
soup = BeautifulSoup(r.content,'html.parser')
get_data = Pythonoperator(
task_id='get_data',python_callable=get_data,dag=dag
)
send_to_s3_and_redshift = Pythonoperator(
task_id='send_to_s3_and_redshift',python_callable=send_to_s3_and_redshift,dag=dag
)
get_data >> send_to_s3_and_redshift
它是非常简单的代码。传递了IG链接列表,然后它请求该链接并解析结果。但是r.content
似乎不存在。疯狂的部分是,日志记录甚至无法在此行上工作:
logging.info(r.content)
相反,它直接进入下一行日志记录,并打印str
作为类型。响应码为200,类型为str,但不会打印或解析。我唯一能猜到的是IG正在阻止发出请求的气流?但是后来我不明白为什么它会用200代码来响应,为什么它在本地也可以正常工作
[2020-08-25 23:20:39,280] {base_task_runner.py:98} INFO - Subtask: [2020-08-25 23:20:39,279] {_kondo_crowdtangle.py:74} INFO - https://www.instagram.com/p/CDjX7uAl0zg/?igshid=lcsk0qnidrcz
[2020-08-25 23:20:39,438] {base_task_runner.py:98} INFO - Subtask: [2020-08-25 23:20:39,438] {_kondo_crowdtangle.py:76} INFO - Page...
[2020-08-25 23:20:39,439] {base_task_runner.py:98} INFO - Subtask: [2020-08-25 23:20:39,438] {_kondo_crowdtangle.py:77} INFO - 200
[2020-08-25 23:20:39,439] {_kondo_crowdtangle.py:79} INFO - <type 'str'>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)