我的项目要求我分几个步骤从网站中抓取信息,每个步骤都添加新页面和变量以在随后的步骤中抓取。我为此使用Python ...仅3个月前才学习了非常基本的方面,但仍然很新。

刮取顺序如下:

步骤0:
要抓取的顶级URL的CSV1文件(url_1),总共约20个URL

->

步骤1:
采取scrape1.py,它使用Selenium Firefox Webdriver在CSV1中加载每个(url_1)链接,以使CSV2在列中包含以下中间类别变量:(variable1),(variable2),(variable3),(variable4),(variable5 ),(url_2)...每次加载(url_1)都会产生12-24个具有唯一(url_2)链接的新行,因此总共约有400多行

->

第2步:
使用scrape2.py和Beautiful Soup在CSV2中加载每个(url_2)链接,并使CSV3在列中包含以下最终类别变量:(variable_A),(variable_a),(url_a),(variable_B),(variable_b),( url_B),(url_b)。每个(url_2)链接都会产生20+个每个变量(A,a,B,b)和url(a,B,b),因此输出将超过10,000行(目前仅在较小版本的CSV2上运行)只有url_2的5行)

->

第三步:

将所有变量合并到一个CSV4文件中。

我遇到的问题在步骤3中。我能够创建CSV1,CSV2和(截短的)CSV3。我能够制作scrape1.py和scrape2.py并成功收集变量和URL。但是我不知道如何将所有变量都放入一个CSV文件中。尤其是因为每个阶段都成倍地增加了随后的变量数量,所以CSV1中的(url_1)的一行将在CSV3中产生200-400 +行的变量。我需要将变量从一个CSV文件“传递”到下一个文件,但是对于新的行迭代,新文件中必须多次包含结转变量,而不仅仅是一次,因此只需将它们添加为新列将不起作用。

最终输出应为:

CSV1:(url_1)[x20]

CSV2:对于每个(url_1),以下内容约22行:
(变量1),(变量2),(变量3),(变量4),(变量5),(URL_2)

CSV3:对于每个(url_2),约有30行:
(variable_A),(variable_a),(url_a),(variable_B),(variable_b),(url_B),(url_b)

CSV4:CSV3中的每一行都复制了先前的变量,因此每一行都具有:
(url_1),(variable1),(variable2),(variable3),(variable4),(variable5),(url_2),(variable_A),(variable_a),(url_a),(variable_B),(variable_b),(url_B) ),(url_b)

有人建议我尝试Pandas,但是我无法弄清楚如何仅使用我从他人项目中获得的知识来实现​​这一点。

任何帮助将非常感激!

最佳答案

对于带有列的CSV:


CSV1


url_1

CSV2


url_1
变量1
url_2

CSV3


url_2
variable_A



如果要合并这些CSV,只需使用pandas.merge

pandas.merge(CSV1,CSV2)将使用它们的公用列(在示例中,列url_1)将CSV1和CSV2连接起来。

查看示例here

关于python - 抓取网址和嵌套CSV与python结合时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43815178/

10-11 12:44