我試圖通過瀏覽所有不同的頁面來抓取職業搜索網站,並且在嘗試追加字典時遇到問題使用for循環進入列表。當我在Python 3.4中執行下面的代碼時,代碼會將每個頁面的所有相關數據都拉到字典中(我用print()進行了檢查),並將其添加到「FullJobDetails」中,但在for循環結束時I獲取僅包含最後一頁字典的列表。字典的數量與列表「ListofJobs」中的頁面數量完全相同。 「ListofJobs」是我要刪除的每個頁面的html鏈接列表。當通過for循環將字典添加到列表中時,我只獲取最後一個字典
我剛開始學習代碼,所以我知道下面的代碼沒有任何形狀,方式,或形成最有效或最好的方式。任何建議,將不勝感激。提前致謝!
FullJobDetails = []
browser = webdriver.Chrome()
dictionary = {}
for jobs in ListofJobs:
browser.get(jobs)
dictionary["Web Page"] = jobs
try:
dictionary["Views"] = browser.find_element_by_class_name('job-viewed-item-count').text
except NoSuchElementException:
dictionary["Views"] = 0
try:
dictionary['Applicants'] = browser.find_element_by_class_name('job-applied-item-count').text
except NoSuchElementException:
dictionary["Applicants"] = 0
try:
dictionary["Last Application"] = browser.find_element_by_class_name('last-application-time-digit').text
except NoSuchElementException:
dictionary["Last Application"] = "N/A"
try:
dictionary["Job Title"] = browser.find_element_by_class_name('title').text
except NoSuchElementException:
dictionary["Job Title"] = "N/A"
try:
dictionary['Company'] = browser.find_element_by_xpath('/html/body/div[3]/article/section[2]/div/ul/li[4]/span/span').text
except NoSuchElementException:
dictionary['Company'] = "Not found"
try:
dictionary['Summary'] = browser.find_element_by_class_name('summary').text
except NoSuchElementException:
dictionary['Summary'] = "Not found"
FullJobDetails.append(dictionary)
堅持。你用一個真正的HTML解析器解析'job.content',然後立即*解析它並用正則表達式搜索原始文本? – user2357112
你確定你已經顯示的代碼是你正在運行的?你所描述的問題正是我所期望的,如果'dict = {}'這一行在循環之外而不是顯示它的地方。 (與你的問題無關的一點:使用'dict'作爲變量名是一個非常糟糕的主意,它隱藏了內建'dict'類的名字,後面會引起非常混亂的錯誤。) – Blckknght
是的顯示的代碼與正在運行的「縮進」等完全相同。如果它自己被重置,我會想象列表中只有一個字典(最後一個),而不是多個都與最後一個字典相對應。感謝您對重命名字典的建議,我會將其更改爲另一個變量。 –