进入淘宝网,分别按综合、销量排序抓取100页的所有商品的列表信息。
1、按综合
import re from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from pyquery import PyQuery as pq #获取整个网页的源代码 from config import * #可引用congif的所有变量 import pymongo import pymysql # client=pymongo.MongoClient(MONGO_URL) # db = client[MONGO_DB] # 按综合排序 100页 # 打开淘宝链接,输入‘美食',搜索 # 自动翻页:先得到总页数,再转到 _ 页,确定 # # browser = webdriver.PhantomJS(service_args=SERVICE_ARGS) # browser =webdriver.Chrome() browser = webdriver.Firefox() wait = WebDriverWait(browser,10) def search(): print('正在搜索...') try: browser.get('https://www.taobao.com') #用这个网页'https://s.taobao.com',无法输入keywords input=wait.until( EC.presence_of_element_located((By.CSS_SELECTOR,'#q')) #打开淘宝,右击查看元素,定位到搜索框,选择对应代码,复制-CSS选择器,其实就是‘#q'。 ) submit=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_TSearchForm > div.search-button > button'))) input.send_keys(KEYWORD) #模拟操作,输入内容 submit.click() #点击提交 total = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.total'))) #页数 return total.text except TimeoutException : return search() # 翻页 def next_page(page_number): print('正在翻页',page_number) try: input = wait.until( # 输入框 EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > input')) # 打开淘宝,右击查看元素,定位到搜索框,选择对应代码,复制-CSS选择器,其实就是‘#q'。 ) # 搜索按钮 submit = wait.until(EC.element_to_be_clickable((By.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((By.CSS_SELECTOR ,'#mainsrp-pager > div > div > div > ul > li.item.active > span'), str(page_number))) get_products() except TimeoutException : next_page(page_number) # 解析,获取每页的商品并输出 def get_products(): wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item'))) #加载所有宝贝 html=browser.page_source doc = pq(html) items = doc('#mainsrp-itemlist .items .item').items() for item in items: product = { # 'picture':item.find('.pic .img').attr('src'),#用find去获取内部元素,选择器是 pic,img,用attr获取属性 'image': item.find('.pic .img').attr('data-src'), # 用find去获取内部元素,选择器是 pic,img,用attr获取属性 'shop_id': item.find('.shop').find('a').attr('data-userid'), # 店铺 id 'data_id': item.find('.shop').find('a').attr('data-nid'), # 商品 id 'link': item.find('.pic-box-inner').find('.pic').find('a').attr['href'], 'price':item.find('.price').text()[1:-3], # 用text获取内容 'deal':item.find('.deal-cnt').text()[:-3], 'title':item.find('.title').text().replace(' ',''), 'shop':item.find('.shop').text(), 'location':item.find('.location').text() } # print(product) # print(product['location']) save_to_mysql(product) ''''' def main(): try: # search() total=search() # 此时 total = ‘共 100 页,' total=int(re.compile('(\d+)').search(total).group(1)) # 用正则表达式提取数字100 # print(total) for i in range(2,total+1): next_page(i) except Exception: print('出错啦') finally: # 不管有没有异常,都要执行此操作 browser.close() # 关浏览器 ''' def main(): total=search() total=int(re.compile('(\d+)').search(total).group(1)) for i in range(2,total+1): next_page(i)#显示当前爬取网页的页数 print ('搞定%d'%i) def save_to_mysql(product): # print(product['location']) #,use_unicode = False try: conn = pymysql.connect(host='localhost', user='root', passwd=' ', db='test1', port=3306,charset='utf8' ) cur = conn.cursor() # 创建一个游标对象 sql = """INSERT INTO women_clothes_zonghe VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)""" cur.execute(sql, (product['shop_id'],product['shop'], product['link'],product['data_id'], product['title'], product['price'], product['location'],product['deal'],product['image'])) # cur.execute(sql) print('- - - - - 数据保存成功 - - - - -') cur.close() conn.commit() conn.close() # 关闭数据 except pymysql.Error as e: print(e) if __name__=='__main__': # 连接数据库 conn = pymysql.connect(host='localhost', user='root', passwd=' ', db='test1', port=3306,charset="utf8") cur = conn.cursor() # 创建一个游标对象 cur.execute("DROP TABLE IF EXISTS women_clothes_zonghe") # 如果表存在则删除 # 创建表sql语句 sqlc = """CREATE TABLE women_clothes_zonghe( shop_id VARCHAR(500), shop VARCHAR(500), link VARCHAR(1000), data_id varchar(100), title VARCHAR(1000), price VARCHAR(500), location VARCHAR(500), deal VARCHAR(500), image VARCHAR(1000) )""" cur.execute(sqlc) # 执行创建数据表操作 main()
2、按销量
import re from bs4 import BeautifulSoup from pyquery import PyQuery as pq #获取整个网页的源代码 from config import * #可引用congif的所有变量 import pymongo import pymysql import urllib import requests import json import bs4 from selenium import webdriver from pyquery import PyQuery as pq #获取整个网页的源代码 # 完整爬取所有页面的商品信息 共100页 按销量排序 browser = webdriver.Firefox() wait = WebDriverWait(browser,10) def get_url(keyword): url_str = urllib.parse.quote(keyword) i = 0 for j in range(100): yield{ 'url':('https://s.taobao.com/search"insert into women_clothes_sales2 values (%s,%s,%s,%s,%s,%s,%s,%s,%s)" cur.execute(sql,(product['shop_id'],product['shop'],product['link'],product['data_id'],product['title'],product['price'],product['location'],product['deal'],product['image'])) print('- - - 数据保存成功 - - - ') cur.close() conn.commit() conn.close() except pymysql.Error as e: print(e) def main(): keyword = '女装' links = get_url(keyword) # 字典 # 获取每页的 url for link in links: # print(link) url = link['url'] #解析页面 # soup = get_html(url) # print(soup) # get_detail(soup,url) get_products(url) if __name__=='__main__': conn = pymysql.connect(host='localhost',user = 'root',passwd=' ',db='test1',port = 3306,charset='utf8') cur = conn.cursor() cur.execute('Drop table if exists women_clothes_sales2') sqlc = "create table women_clothes_sales2(shop_id varchar(100),shop varchar(500),link varchar(1000),data_id varchar(100),title varchar(500),price varchar(200),location varchar(100),deal varchar(100),image varchar(1000))" cur.execute(sqlc) cur.close() conn.commit() conn.close() main()
更多内容请参考专题《python爬取功能汇总》进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]