簡要已經運行: 我使用Selenium WebDriver
和Pandas
爲Python 2.7版使Web刮即去的網址和擦傷的網址上,一個序列頁。如果它在那裏找到URL,我希望它們被添加到正在運行的序列中。我如何使用pandas.DataFrame.apply
來做到這一點?熊貓:追加行數據幀通過pandas.DataFrame.apply
代碼:
import pandas as pd
from selenium import webdriver
import re
df = pd.read_csv(spreadsheet.csv, delimiter=",")
def crawl(use):
url = use["URL"]
driver.get(url)
scraped_urls = re.findall(r"(www.+)", element.text)
something_else = "foobar"
#Ideally the scraped_urls list would have to be unpacked here
return pd.Series([scraped_urls, something_else])
df[["URL", "Something else"]] = df["URL"].apply(crawl)
df.to_csv("result.csv", delimiter=",")
上述刮板使用列"URL"
在spreadsheet.csv
導航到每一個新的url
。 然後,它會擦除頁面上與正則表達式www.+
匹配的所有字符串以查找URL,並將結果放入列表scraped_urls
。
它也得到字符串something_else = "foobar"
。
當它處理完"URL"
中的所有單元格後,它會寫入一個新文件result.csv
。
我的問題:
我已經很難找到一種方法來列表scraped_urls
加刮網址到列"URL"
- 讓他們插入略低於「活動「URL(與use["URL"]
一起檢索)。
如果源電子表格中的列如下:
"www.angelfire.com"
"www.gamespy.com"
我想:
["URL"]
"www.yahoo.com"
"www.altavista.com"
"www.geocities.com"
而且在www.yahoo.com,刮板通過正則表達式找到這些字符串將這些行添加到www.yahoo.com
以下的列"URL"
,以便它們成爲刮板搜索的下一個關鍵字:
["URL"]
"www.yahoo.com" #This one is done
"www.angelfire.com" #Go here now
"www.gamespy.com" #Then here
"www.altavista.com" #Then here
"www.geocities.com" #...
這可能嗎?我可以即時追加已通過apply()
運行的DataFrame df
嗎?