美文网首页
2019-06-15-selenium模拟登陆淘宝--版本1.0

2019-06-15-selenium模拟登陆淘宝--版本1.0

作者: heiqimingren | 来源:发表于2019-06-15 18:26 被阅读0次

    遗留的问题。
    1,用的是selenium,没办法全自动。登陆的时候,我需要用手机淘宝扫码登陆一下。
    2,翻页问题也没有解决,以后有机会更新。

    
    
    '''
    1,b站视频,我对照着来做的。https://www.bilibili.com/video/av53536264
    2,xpaht语法,我用的不是很熟,没有视频引导,我估计我写不出来。直接复制浏览器提供的肯定不行的。
    3,目前只能提取出页面中第2名到第47名的产品链接。首位是广告位,目前没出来,直通车位置也没有处理。
    4,selenium登录,目前得靠手工去操作。
    5,2019-6-15-淘宝翻页问题还没有解决,用click点击下一页的方法似乎行不通。
    只能更换另一个方法了。直接访问新的url。有机会就更新一下。
    
    
    
    '''
    
    from selenium import webdriver
    import time
    
    from bs4 import BeautifulSoup
    
    import urllib.request
    
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    class TbSpider(object):
        driver_path = "D:\chromedriver_win32\chromedriver.exe"
        def __init__(self):
            self.driver = webdriver.Chrome(executable_path=TbSpider.driver_path)
            self.keywords = "ipad"
            word = url_code_name = urllib.request.quote(self.keywords)
            self.url = "https://s.taobao.com/search?q="+ self.keywords
            self.url2 = "https://item.jd.com/17033085487.html"
    
        def get_html(self):
            # 这个函数就是打开url,然后我手动扫描登录淘宝。
            self.driver.get(self.url)
            self.driver.maximize_window()
            #这里用time.sleep不行,得用一个显示等待代码。
            try:
                element = WebDriverWait(self.driver, 100).until(
                    EC.presence_of_element_located((By.ID, "tabFilterMall")))
            finally:
                print('显示等待完成。')
                print(element)
        def get_html_code(self):
            #得到网页源代码,并且提取网页44个产品标题,价格,销量。
            html = self.driver.page_source
    
            #elements很精髓。其次,xpath语法也非常精髓。
            lists = self.driver.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq  "]')
    
            # print(lists)
            i=1
            for list in lists:
                title = list.find_element_by_xpath('.//div[@class="row row-2 title"]').text #得到的是产品标题。
                address = list.find_element_by_xpath('.//div[@class="row row-3 g-clearfix"]/div[@class="location"]').text #得到发货地址
                shop_name = list.find_element_by_xpath('.//div[@class="row row-3 g-clearfix"]/div[@class="shop"]').text #得到店铺名字
                number = list.find_element_by_xpath('.//div[@class="row row-1 g-clearfix"]/div[@class="deal-cnt"]').text #得到购买人数
                price = list.find_element_by_xpath('.//div[@class="price g_price g_price-highlight"]').text #得到价格
                product_url = list.find_element_by_xpath('.//div[@class="pic"]/a').get_attribute('href') #得到产品链接
                main_pic = list.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src') #得到产品主图链接--
                print(product_url,main_pic)
    
                print(i)
                i=i+1
    
                #判断是否为天猫店铺有点麻烦--天猫店铺独有一个class="icon-service-tianmao"  这个class,其余的都没有。
    
        def run(self):
            self.get_html()
            self.drop_down()
            self.get_html_code()
            # self.click_next()
    
    
        def click_next(self):
            #实现翻页效果
            # url = self.driver.current_url #获取当前页面
    
    
            self.driver.find_element_by_xpath('//li[@class="item next"]/a/span[1]').click()
    
    
        def drop_down(self):
            #抄袭的是视频中的代码,实现自动翻页的效果。
            for x in range(1,11,2):
                time.sleep(0.5)
                j = x/10
                js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
                self.driver.execute_script(js)
    
    if __name__ == "__main__":
        spider = TbSpider()
        spider.run()
    

    相关文章

      网友评论

          本文标题:2019-06-15-selenium模拟登陆淘宝--版本1.0

          本文链接:https://www.haomeiwen.com/subject/wcfifctx.html