selenium爬取数据
代码是将数据放入了数据库中懒得改了就直接发了
driver=webdriver.Chrome()
driver.get("https://www.lagou.com")
driver.find_element_by_class_name("tab").click()
driver.find_element_by_id("search_input").send_keys("python数据分析")
driver.find_element_by_class_name("search_button").click()
time.sleep(3)
for k in range(30):
data1=driver.find_elements_by_class_name("position_link")
data2=driver.find_elements_by_class_name("format-time")
data3=driver.find_elements_by_class_name("p_bot")
data4=driver.find_elements_by_class_name("company_name")
data5=driver.find_elements_by_class_name("list_item_bot")
data6=driver.find_elements_by_xpath("//a[@class='position_link']")
for i in range(len(data1)):
x1=data2[i].text
x2=data1[i].text.split()
x3=data3[i].text.split()
x4=data4[i].text
x5=data5[i].text.split()
x6=data6[i].get_attribute('href')
sql="insert into python_data_analysis values(0,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
cur.execute(sql,[x1,x2[0],str(x2[1]),x3[0],x3[1],x4,str(x5[0:-1]),x5[-1],x6])
conn.commit()
###下面的是定位翻页按键
if k<1:
a=driver.find_element_by_xpath("//ul[@id='order']//div[@class='next_disabled next ']")
a.click()
elif k<=28:
a=driver.find_element_by_xpath("//ul[@id='order']//div[@class='next_disabled next']")
a.click()
print("保存成功")
time.sleep(4)
通过selenium去爬取数据主要的难题在翻页,最底下的翻页按钮定位到之后会被提示
‘element click intercepted’点击被拦截了,所以用上面的翻页按钮进行翻页
if k<1:
a=driver.find_element_by_xpath("//ul[@id='order']//div[@class='next_disabled next ']")
a.click()
elif k<=28:
a=driver.find_element_by_xpath("//ul[@id='order']//div[@class='next_disabled next']")
a.click()
定位元素翻页,第一页翻页的时候我们可以在浏览器里看到 ‘ > ’ 这个摁键的class是’next_disabled next ’
!!!!重点带空格的,第二页以后的class都变成了’next_disabled next’少了一个空格。嗯然后就解决了
(仅供学习使用呀)