使用selenium模拟用户
实现异步请求网络数据爬取!!!很清楚哇!!!
-
数据抓包常用方式:谷歌浏览器调试模式–>network—>选择xhr(异步请求的接口)–>查看对应接口的response响应数据
-
selenium
-
selenium简单使用
from selenium import webdriver #1. 获取浏览器对象 # webdriver.Chrome(executable_path='chromedriver.exe')#没有导入驱动,就以相对路径的方式引入 browser = webdriver.Chrome()#将驱动导入到了scripts目录中 #2. 请求url url = "https://www.baidu.com" #3. 窗口最大化 browser.maximize_window() browser.get(url)
-
selenium模拟用户行为豆瓣搜索
from selenium import webdriver #1. 浏览器 browser = webdriver.Chrome() url = "https://movie.douban.com/top250" browser.maximize_window() browser.get(url) #2. 获取网页源码 # print(browser.page_source) #3. 查找搜索框并赋值 # send_keys:给输入框赋值 browser.find_element_by_css_selector("#inp-query").send_keys("逐梦演艺圈") #4. 查找搜索按钮并点击 browser.find_element_by_css_selector("#db-nav-movie > div.nav-wrap > div > div.nav-search > form > fieldset > div.inp-btn").click() #5. 清空输入框内容 # clear:清空输入框内容 browser.find_element_by_css_selector("#inp-query").clear() #6. 查找搜索框并赋值 # send_keys:给输入框赋值 browser.find_element_by_css_selector("#inp-query").send_keys("周润发") #7. 查找搜索按钮并点击 browser.find_element_by_css_selector("#db-nav-movie > div.nav-wrap > div > div.nav-search > form > fieldset > div.inp-btn").click()
-
selenium自动翻页抓取京东数据
from selenium import webdriver import time import csv #1. 浏览器 browser = webdriver.Chrome() url = "https://www.jd.com/" browser.maximize_window() #2. 请求 browser.get(url) #3. 搜索框输入内容并搜索 browser.find_element_by_css_selector("#key").send_keys("男士衣服") browser.find_element_by_css_selector("#search > div > div.form > button").click() time.sleep(2)#睡2秒,根据自己网络状况设置等待时间 #4. 下一页按钮可以被点击时:class="pn-next" # 下一页按钮不可以被点击时:class="pn-next disabled" #5. 循环翻页抓取数据 for while # 循环结束的条件:到最后一页,不能被继续翻页 # 判断源码中是否存在pn-next disabled字符串内容,如果存在,表示到了最后一页,不能翻页 i = 1#控制页数 j = 1#控制条数 while(True): # 6. 搜索所有商品的li var let const li_list = browser.find_elements_by_css_selector("#J_goodsList > ul > li") # 7. 遍历所有li for li in li_list: # 8. 价格 # 标签.text:获取标签内部的文本内容 price = li.find_element_by_css_selector("div > div.p-price > strong > i").text # 9.标题 title = li.find_element_by_css_selector("div > div.p-name.p-name-type-2 > a > em").text # 10.店铺 标签.get_attribute(属性名) : 获取标签的属性值 store = li.find_element_by_css_selector("div > div.p-shop > span > a").get_attribute("title") # 11. 写入到csv文件 with open("男士衣服.csv", "a", encoding="utf-8", newline='') as file: csv.writer(file).writerow([price, title, store]) print("第{}页第{}条下载完成".format(i,j)) j += 1 if browser.page_source.find("pn-next disabled") == -1: #12. 开始翻页 browser.find_element_by_class_name("pn-next").click() i+=1 time.sleep(2)#翻页之后等待 else: break
-
拉勾网爬虫分析
from selenium import webdriver browser = webdriver.Chrome() browser.maximize_window() browser.get("https://www.lagou.com/") #1. 定位选全国 browser.find_element_by_css_selector("#changeCityBox > p.checkTips > a").click() #2. 输入内容并搜索 browser.find_element_by_css_selector("#search_input").send_keys("数据分析") browser.find_element_by_css_selector("#search_button").click() #3. 给也不要 browser.find_element_by_css_selector("body > div.body-container.showData > div > div.body-btn").click()