我的项目要求我分几个步骤从网站中抓取信息,每个步骤都添加新页面和变量以在随后的步骤中抓取。我为此使用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/