遗留的问题。
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()
网友评论