|

楼主 |
发表于 2020-6-12 19:47:41
|
显示全部楼层
#-*- coding: utf-8 -*-
from selenium import webdriver
from lxml.html import etree
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import time
class myspiderSpider(object):
driver_path = r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
def __init__(self):
self.driver = webdriver.Chrome(executable_path =myspiderSpider.driver_path)
self.url = 'www.58.com'
def run(self):
self.driver.get(self.url)
source = self.driver.page_source
self.parse_list_page(source)
driver = self.driver
def parse_list_page(self,source):
html = etree.HTML(source)
links = html.xpath('//*[@id="dataList"]/tr[position()<50]/a/@href')
for link in links:
self.request_detail_page(link)
time.sleep(2)
def request_detail_page(self,url):
driver = self.driver
self.driver.execute_script("window.open('%s')"%url)
self.driver.switch_to.window(self.driver.window_handles[1])
source = self.driver.page_source
self.parse_detail_page(source)
self.driver.close()
self.driver.switch_to.window(self.driver.window_handles[0])
time.sleep(2)
def parse_detail_page(self,source):
html = etree.HTML(source)
driver = self.driver
element = driver.find_element_by_xpath('.... ')
tr_content = element.find_elements_by_xpath(' ... ')
lst = []
for tr in tr_content:
lst.append(tr.text)
print(lst)
if __name__ == '__main__':
spider = myspiderSpider()
spider.run()
|
|