ChatGPT教你學Python爬蟲
“
作為一個編程助手,雖然不能幫我們解決一個復雜的業務需求,但在處理一些具體工具類需求上,能夠快速生成我們需要的代碼,尤其對一些編程初學者,不僅能借助快速完成自己的小工具,還能在與的交流中學到編程很多技巧,比如使用它編寫爬蟲代碼。
”使用編寫爬蟲代碼的優勢:
語言表達能力:可以理解你對爬蟲任務的需求和問題描述,并生成相應的代碼。它能夠幫助你用更準確和自然的語言表達你的意圖,從而生成更高質量的爬蟲代碼。
自動化代碼生成:可以根據你提供的問題和要求,自動生成符合需求的爬蟲代碼。它能夠快速生成骨架代碼和常用的爬蟲操作,節省你的時間和精力。
學習機會:與交互編寫爬蟲代碼可以作為學習的機會。你可以通過與對話,了解編寫爬蟲的最佳實踐、常見問題和技巧。這有助于提高你的爬蟲技能和理解。
對于學習者來說,可以通過以下方式使用提高爬蟲水平:
提出問題和需求:將你的爬蟲問題和需求以自然語言的形式提供給。描述你希望爬取的網站、所需的數據和操作等。將為你生成相應的代碼示例。
學習生成的代碼:仔細閱讀生成的代碼示例,理解其結構、函數和操作。學習生成代碼的基本邏輯和語法,這有助于你掌握爬蟲編程的基本概念和技巧。
調試和優化:生成的代碼可能需要進一步調試和優化,以適應具體的爬取任務和網站。學習如何分析代碼問題、解決錯誤和改進代碼質量。這將有助于你提高爬蟲代碼的穩定性和效率。
探索其他資源:是一個工具,但并不是唯一的資源。繼續學習其他爬蟲教程、文檔和示例代碼,深入了解爬蟲框架和庫的使用。結合生成的代碼和其他資源,你將能夠全面提高爬蟲水平。
需要注意的是,生成的代碼可能不是完美的,仍需自己進行測試、調整和驗證。它只是一個輔助工具,而不是替代你自己學習和實踐的方式。將作為學習和探索的工具,并與其他資源相結合,可以幫助你提高爬蟲水平。
下面我們通過爬取京東的商品評論來學習一下在爬蟲中的應用:
首先我們要分析一下我們要抓取的對象,開京東商城網站,進入一個具體商品的網頁,找到商品評論板塊,查看網頁源代碼并不能找到評論信息,說明網頁是動態加載設計。所以直接通過頁面和接口都沒有辦法抓取到需要的內容,這個時候可以應該通過模擬瀏覽器操作來抓取。直接把需求提給。
指令:
你是一個Python專家,擅長爬蟲代碼編寫,這個網站的商品評價是動態加載的,請用Python代碼爬取這個網站https://item.jd.com/100038004389.html的商品評價
安裝好需要的庫后,直接復制代碼到編輯器運行,修改路徑為本地實際的地址,然后運行代碼,可以看到直接獲取到了我們需要的內容:
但是這只是抓取了一頁的請求,可以繼續優化,獲取多頁的內容,并且保存在本地文件中。
繼續在對話中提出需求:
生成代碼后,再次復制到編輯器中(注意修改路徑),運行后報錯:
直接把報錯發送給,分析了錯誤的原因,立馬給出了解決方案,重新生成一份代碼。
這次給出了最終的代碼,復制到編輯器中運行,成功,獲取到了5頁的商品評論,并且保存到了本地文件.csv中。
最終生成的代碼如下:
import?csv
import?time
from?selenium?import?webdriver
from?selenium.webdriver.chrome.service?import?Service
from?selenium.webdriver.common.by?import?By
from?selenium.webdriver.chrome.options?import?Options
from?selenium.webdriver.common.action_chains?import?ActionChains
from?selenium.webdriver.common.keys?import?Keys
#?設置ChromeDriver的路徑
webdriver_service?=?Service('path/to/chromedriver')
#?創建Chrome瀏覽器選項
chrome_options?=?Options()
chrome_options.add_argument('--headless')??#?無頭模式,可選
chrome_options.add_argument('--no-sandbox')
#?創建Chrome瀏覽器驅動
driver?=?webdriver.Chrome(service=webdriver_service,?options=chrome_options)
url?=?'https://item.jd.com/100038004389.html'
page_count?=?5??#?想要獲取的評價頁數
#?使用Selenium打開頁面
driver.get(url)
#?等待頁面加載完成
driver.implicitly_wait(10)
#?創建CSV文件
csv_file?=?open('product_reviews.csv',?'w',?newline='',?encoding='utf-8')
csv_writer?=?csv.writer(csv_file)
csv_writer.writerow(['Content'])
#?獲取評價信息
for?_?in?range(page_count):
????#?模擬滾動到底部,以加載更多評價內容
????actions?=?ActionChains(driver)
????actions.send_keys(Keys.END)
????actions.perform()
????#?等待加載更多評價
????time.sleep(2)
????#?提取評價信息
????evaluations?=?driver.find_elements(By.CSS_SELECTOR,?'.comment-item')
????for?evaluation?in?evaluations:
????????#?提取評價內容
????????content?=?evaluation.find_element(By.CSS_SELECTOR,?'.comment-con').text.strip()
????????csv_writer.writerow([content])
????#?點擊下一頁按鈕
????next_button?=?driver.find_element(By.CSS_SELECTOR,?'.ui-pager-next')
????driver.execute_script("arguments[0].click();",?next_button)
????#?等待頁面加載完成
????driver.implicitly_wait(10)
#?關閉瀏覽器
driver.quit()
#?關閉CSV文件
csv_file.close()
這段代碼,如果初學者自己去寫,可能半天一天也不一定能完成,現在只需要20分鐘就能搞定。
有時候,生成的代碼不一定可用,一方面可以多試幾次,把遇到的問題告訴它,問題不僅會得到解決,還能了解產品問題的原因是什么。
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。