只需1分钟,就可以爬取高德地图1个地市900个景区名称地址

需要的库:

selenium:自动化操作浏览器

beautifulsoup:提取数据

安装方式:pip

需要注意的是:selenium需要安装对应的浏览器的驱动:

Chrome

下载chrome的webdriver: http://chromedriver.storage.googleapis.com/index.html

Firefox

Firefox驱动下载地址为:https://github.com/mozilla/geckodriver/releases/

IE

IE浏览器驱动下载地址为:http://selenium-release.storage.googleapis.com/index.html

根据自己selenium版本下载对应版本的驱动即可

下载后:如果是windows赋值驱动到浏览器的安装目录即可

思路:通过selenium打开浏览器,在搜索框输入景区,然后就可以看到一个弹出的下拉框,每页有20个景区,一共有40多页,就需要提取每页的景区名称和地址,然后点击下一页再继续提取,最后保存到文件中:

只需1分钟,就可以爬取高德地图1个地市900个景区名称地址

开始:

打开jupyter:

第一步:导入需要的库:

from bs4 import BeautifulSoup
from selenium import webdriver
import time
import pandas as pd

第二步:通过selenium打开浏览器,搜索

driver = webdriver.Firefox()
driver.maximize_window()
driver.get("https://www.amap.com/")
elem = driver.find_element_by_xpath('//*[@id="searchipt"]')
elem.send_keys("景区")
elem = driver.find_element_by_xpath('/html/body/section[1]/header/div[2]/div/i')
elem.click()

第三步:通过beautifulsoup获取网页源代码,并提取需要的内容,并通过selenium重复点击下一页,重复提取至字典中:

dict = {}
dict2 = {}
for i in range(47):
 print(i)
 soup = BeautifulSoup(driver.page_source)
 for na, ad in zip(soup.select(".poi-name"), soup.select(".poi-addr")):
 print(na.string)
 dict[''.join(na.string.split())] = ad.string
 elem = driver.find_element_by_xpath(
 "/html/body/div[1]/section/section/div[2]/span[1]/i")
 elem.click()
 time.sleep(10)

第四步:导入到pandas中,导出至文件或者剪贴板:

data=pd.DataFrame.from_dict(dict,orient='index')
data.reset_index(inplace=True)
data.columns=["名称","地址"]
data.to_clipboard()
data

结果:

只需1分钟,就可以爬取高德地图1个地市900个景区名称地址


分享到:


相關文章: