进入淘宝网,分别按综合,销量排序抓取100页的所有商品的列表信息。
1,按综合
进口再保险 从硒进口webdriver 从selenium.common.exceptions进口TimeoutException 从selenium.webdriver.common.by进口 从selenium.webdriver.support。ui进口WebDriverWait 从selenium.webdriver。支持导入expected_conditions EC 从进口pyquery pyquery pq #获取整个网页的源代码 从配置导入* #可引用congif的所有变量 进口pymongo 进口pymysql #客户=pymongo.MongoClient (MONGO_URL) # db=客户(MONGO_DB) #按综合排序100页 #打开淘宝链接,输入的美食”,搜索 #自动翻页:先得到总页数,再转到_页,确定 # #浏览器=webdriver.PhantomJS (service_args=service_args) #浏览器=webdriver.Chrome () 浏览器=webdriver.Firefox () 等待=WebDriverWait(浏览器,10) def搜索(): 打印(“正在搜索……”) 试一试: browser.get (“https://www.taobao.com”) #用这个网页“https://s.taobao.com”,无法输入关键字 输入=wait.until ( EC.presence_of_element_located (By.CSS_SELECTOR, ' #问'))#打开淘宝,右击查看元素,定位到搜索框,选择对应代码,复制但css选择器,其实就是“#问”。 ) 提交=wait.until (EC.element_to_be_clickable ((。CSS_SELECTOR’# J_TSearchForm比;div.search-button祝辞按钮”))) input.send_keys(关键字)#模拟操作,输入内容 submit.click() #点击提交 总=wait.until (EC.presence_of_element_located ((。CSS_SELECTOR’# mainsrp-pager比;div祝辞div祝辞div祝辞div.total '))) #页数 返回total.text 除了TimeoutException: 返回搜索() #翻页 def next_page (page_number): 打印(“正在翻页”,page_number) 试一试: 输入=wait.until ( #输入框 EC.presence_of_element_located ((。CSS_SELECTOR’# mainsrp-pager比;div祝辞div祝辞div祝辞div.form祝辞输入'))#打开淘宝,右击查看元素,定位到搜索框,选择对应代码,复制但css选择器,其实就是“#问”。 ) #搜索按钮 提交=wait.until (EC.element_to_be_clickable ((。CSS_SELECTOR’# mainsrp-pager比;div祝辞div祝辞div祝辞div.form祝辞span.btn.J_Submit '))) #未修改 input.clear () input.send_keys (page_number) #模拟操作,输入页码 submit.click () #判断翻页是否成功,找到高亮页码数,由数子判断 wait.until (EC.text_to_be_present_in_element((通过。CSS_SELECTOR’# mainsrp-pager比;div祝辞div祝辞div祝辞ul祝辞li.item。积极的在跨度”),str (page_number))) get_products () 除了TimeoutException: next_page (page_number) #解析,获取每页的商品并输出 def get_products (): wait.until (EC.presence_of_all_elements_located((通过。CSS_SELECTOR’# mainsrp-itemlist . items .item '))) #加载所有宝贝 html=browser.page_source 医生=pq (html) 项=doc (“# mainsrp-itemlist . items .item”) . items () 项目的项目: 产品={ #“照片”:item.find ('。图片。img) .attr (src), #用找到去获取内部元素,选择器是图片,img,用attr获取属性 “图像”:item.find ('。图片。img) .attr (“data-src”), #用找到去获取内部元素,选择器是图片,img,用attr获取属性 “shop_id”: item.find (.shop); (a) .attr (“data-userid”), #店铺id “data_id”: item.find (.shop); (a) .attr (“data-nid”), #商品id “链接”:item.find (.pic-box-inner); (.pic); (a) .attr (“href”), “价格”:item.find (.price)。text()[1: 3], #用文本获取内容 “协议”:item.find (.deal-cnt)。text () [3], “标题”:item.find (.title)。text ()。替换(“”), “商店”:item.find (.shop)。text (), “位置”:item.find (.location)。text () } #打印(产品) #打印(产品(“位置”)) save_to_mysql(产品) ”“” def main (): 试一试: #搜索() 总==总search() #此时的共100页, 总=int (re.compile ((\ d +)) .search(总).group(1) #用正则表达式提取数100字 #打印(总) 因为我在范围(2 + 1): next_page(我) 除了例外: 打印(“出错啦”) 最后:#不管有没有异常,都要执行此操作 browser.close() #关浏览器 “‘ def main (): 总=搜索() 总=int (re.compile ((\ d +)) .search(总).group (1)) 因为我在范围(2 + 1): next_page (i) #显示当前爬取网页的页数 打印(“搞定% d ' % i) def save_to_mysql(产品): #打印(产品(“位置”)) #,use_unicode=False 试一试: 康涅狄格州=pymysql。连接(主机=' localhost '用户=?passwd=' ', db=test1,端口=3306,charset=use utf8) 坏蛋=conn.cursor() #创建一个游标对象 sql=" "插入women_clothes_zonghe值(% s, % s % s, % s, % s, % s, % s, % s, % s)“”“ cur.execute (sql(产品(“shop_id”)、产品(“商店”),产品(“链接”)、产品(“data_id”)、产品(“标题”)、产品(“价格”),产品(“位置”)、产品(“交易”)、产品('图像'))) # cur.execute (sql) print(”——————————数据保存成功————————”) cur.close () conn.commit () conn.close() #关闭数据 pymysql除外。误差e: 打印(e) if __name__==癬_main__”: #连接数据库 康涅狄格州=pymysql。连接(主机=' localhost '用户=?passwd=' ', db=test1,端口=3306,charset=皍se utf8”) 坏蛋=conn.cursor() #创建一个游标对象 如果存在women_clothes_zonghe cur.execute(“删除表”)#如果表存在则删除 #创建表的sql语句 women_clothes_zonghe sqlc=" "“创建表( shop_id VARCHAR (500), 商店VARCHAR (500), 链接VARCHAR (1000), data_id varchar (100), 标题VARCHAR (1000), 价格VARCHAR (500), 位置VARCHAR (500), 交易VARCHAR (500), 图像VARCHAR (1000) ”“” cur.execute (sqlc) #执行创建数据表操作 main ()python按综合,销量排序抓取100页的淘宝商品列表信息