鱼C论坛

 找回密码
 立即注册
查看: 1420|回复: 3

[已解决]怎么解决天猫爬取商品第二页失败

[复制链接]
发表于 2020-9-16 17:36:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
给个思路,我想不出怎么弄
  1.     <script>
  2.     window.PAGE_START_LOAD_TIME = new Date().getTime();
  3.     window.LOGIN_UMID_LOAD = true;
  4.     window.viewConfig = {"api":{"smsLoginApi":"/newlogin/sms/login.do?appName=taobao&fromSite=0","loginApi":"/newlogin/login.do?appName=taobao&fromSite=0","smsLoginRegAp......
  5.     window.viewData = {"appEntrance":"taobao_pc","appName":"taobao","awscCdn":"//g.alicdn.com","countryAreaConfig":{"countryList":[{"areaName":"中国大陆","checkKey":"^(86){.......
  6.     window._lang = {"error-login-mobile-empty":"请输入手机号码","view-mobile-country-area-popup-cancel-btn-title":"取消","view-pwdlogin-mobile-loginid-title":"手机号","view-qrcodelog.....
复制代码


下面源码是学习其他作者模仿写的
这里url = 'https://list.tmall.com/search_product.htm?q=' + item# + '&s=' + str(num)  加上这个就不行 就会出现上面的问题

  1. import requests
  2. import re
  3. import bs4

  4. def getHtmlText(url):
  5.     header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400'}
  6.     try:
  7.         res = requests.get(url, headers = header, timeout = 30)       #超出加载网页时间,就退出
  8.         res.raise_for_status()                      #检查信号强度
  9.         res.encoding = res.apparent_encoding        #修改编码格式
  10.         return res.text
  11.     except:
  12.         return ''

  13. def parsPage(html, report):
  14.     html = bs4.BeautifulSoup(html, 'html.parser')
  15.     cp = re.compile('<[^>]+>| |\n|\t')

  16.     product_prices = html.find_all('p', class_ = 'productPrice')
  17.     product_titles = html.find_all('p', class_ = 'productTitle')

  18.     for product_price, product_title in zip(product_prices, product_titles):
  19.         price = cp.sub('', str(product_price))
  20.         title = cp.sub('', str(product_title))
  21.         report.append([price, title])

  22. def printGoodList(report, temp):
  23.     tplt = '{:4}\t{:8}\t{:4}'
  24.     print(tplt.format('序号', '价格', '商品名称'))

  25.     while True:
  26.         for i in range(len(report)):
  27.             print(tplt.format(str((temp*60) + i+1), report[i][0], report[i][1]))
  28.         yield

  29. def main():
  30.     # item = input('请选择你要查找的物品?')
  31.     # page = input('请选择需要查找的页数?')

  32.     item = '书包'
  33.     page = '1'

  34.     for temp in range(int(page)):
  35.         report = []
  36.         num = temp*60
  37.         url = 'https://list.tmall.com/search_product.htm?q=' + item# + '&s=' + str(num)  加上这个就不行
  38.         print(url)
  39.         html = getHtmlText(url)
  40.         print(html)
  41.         parsPage(html, report)

  42.         try:
  43.             print(report)
  44.             next(printGoodList(report, temp))
  45.         except StopIteration:
  46.             break

  47. if __name__ == '__main__':
  48.     main()
复制代码
最佳答案
2020-9-16 17:46:40
淘宝没这么简单爬的吧,应该要登陆、cookie之类,爬第二页就没拿到数据,出来的是登陆页面

用selenium先登陆,再获取数据试试吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-16 17:46:40 | 显示全部楼层    本楼为最佳答案   
淘宝没这么简单爬的吧,应该要登陆、cookie之类,爬第二页就没拿到数据,出来的是登陆页面

用selenium先登陆,再获取数据试试吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-16 18:10:00 | 显示全部楼层
疾风怪盗 发表于 2020-9-16 17:46
淘宝没这么简单爬的吧,应该要登陆、cookie之类,爬第二页就没拿到数据,出来的是登陆页面

用selenium先 ...

selenium这个是库吗?
用途是把我的信息输入进去 输出token码这样对吧  
然后用token码进去访问操作?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-16 18:16:28 | 显示全部楼层
城中城 发表于 2020-9-16 18:10
selenium这个是库吗?
用途是把我的信息输入进去 输出token码这样对吧  
然后用token码进去访问操作? ...

差不多意思吧
百度搜一下就知道了,有很多教程,不仅需要pip安装,还需要下载对应浏览器的驱动
速度慢点,但是可以突破很多限制,比如需要登陆的,有动态js加载的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 08:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表