【问题标题】:Instascrape (InvalidArgumentException: invalid argument: 'url' must be a string" )Instascrape(InvalidArgumentException:无效参数:'url' 必须是字符串")
【发布时间】:2021-05-21 00:01:04
【问题描述】:

错误:InvalidArgumentException:无效参数:'url' 必须是字符串

我正在尝试在 Mac 上使用 Instascrape 抓取特定的 Instagram 个人资料以获取上传日期、cmets 和喜欢的数据。我的代码基于尝试重现 Chris Greening 的 Visualizing Instagram Engagement 代码,但对于我希望从中检索数据的配置文件。我在 Selenium 中输入可执行路径时遇到问题,因此我导入了 ChromeDriveManager 来解决这个问题。

至少据我所知,我的问题是 DataFrame 没有接收数据?在某些情况下,我的抓取“成功”运行但仍然产生了一个空的 DataFrame。请让我知道您的想法,或者是否需要我提供任何其他信息。我最近的代码如下。

import pandas as pd
from selenium.webdriver import Chrome
from instascrape import Profile, scrape_posts
from webdriver_manager.chrome import ChromeDriverManager
#defining path for Google Chrome webdriver;
driver = webdriver.Chrome(ChromeDriverManager().install())


# Scraping profile
SESSIONID = 'session id'   #Actual session id excluded on purpose
headers = {"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36 Edg/87.0.664.57",
            "cookie": f"sessionid={SESSIONID};"}
prof = Profile('https://www.instagram.com/username/') #username exlcuded as well
prof.scrape()

# Scraping the posts
posts = prof.get_posts(webdriver=driver, login_first=True)
scraped, unscraped = scrape_posts(posts, silent=False, headers=headers, pause=10)

posts_data = [post.to_dict() for post in posts]
posts_df = pd.DataFrame(posts_data)
print(posts_df[['upload_date', 'comments', 'likes']])

【问题讨论】:

    标签: python pandas selenium selenium-chromedriver


    【解决方案1】:

    您的问题缺少太多相关信息,所以我看不出是什么方法和什么代码行导致了问题,但很明显您尝试使用一些“url”,可能是driver.get(url),而您在那里提供无效数据,可能是None 类型。

    【讨论】:

    • 抱歉,这是我在 StackOverflow 上发布的第一个问题。还有什么有用的?
    • 这里有更多关于错误的信息,也许这有帮助? 'code' 文件“/Users/andrew7/.spyder-py3/autosave/code for stackover .py”,第 32 行,在 print(posts_df[['upload_date', 'cmets', 'likes']]) getitem 中的文件“/Users/andrew7/opt/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py”第 2908 行 indexer = self.loc._get_listlike_indexer( key, axis=1, raise_missing=True)[1] 这给了我:'KeyError: "没有一个 [Index(['upload_date', 'cmets', 'likes'], dtype='object')] 在[列]"'
    • 当我运行时: print(posts_df) 我得到: print(posts_df) Empty DataFrame Columns: [] Index: []
    猜你喜欢
    • 2020-06-09
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2021-06-02
    • 2018-05-16
    • 2020-09-19
    相关资源
    最近更新 更多