关心 YUENTO LEI 2021-05-16 13:22 采纳率: 100%
浏览 121
已采纳

想爬取SHEIN的女裙的图片、标题、价格与颜色,但总是报错

import requests
import bs4
import time
import random
import pandas as pd
import openpyxl
dress_info=[]
#获取所有 url
for i in range(1,10):
   url="https://www.shein.com/Clothing-c-2035.html?ici=www_tab01navbar04&scici=navbar_WomenHomePage~~tab01navbar04~~4~~webLink~~~~0&srctype=category&userpath=category%3ECLOTHING&child_cat_id=1727&page="+str(i)+""
headers = {
         "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36"
         }
print("开始爬取SHElN平台女装品类裙子第%s 页信息....." %(str(i)))
response = requests.get(url=url, headers=headers)

#生成 bs4 对象
bsoup=bs4.BeautifulSoup(response.text,'lxml')
dress_list=bsoup.find('li', class_="list-item")

#bs4 解析文件
for dress in dress_list:    
 photo = dress.find('a').img.jpg()
 titile = dress.find('div', class_='S-product-item__name').text.strip()
 price = dress.find('div', class_='S-product-item__price').text.strip()
 color = dress.find('section', class_='S-product-item__relatecolor-container').text.strip() 
 
 pd1= pd.DataFrame({'photo': photo, 'titile': titile, 'price': price, 'color': color}, index=[0])
 dress_info.append(pd1)
 second=random.randrange(3,5)
 time.sleep(second)
#数据集
dress_info2=pd.concat(house_info)
dress_info2.to_excel('house_info.xlsx',index=False)

想爬取https://www.shein.com/Clothing-c-2035.html?ici=www_tab01navbar04&scici=navbar_WomenHomePage~~tab01navbar04~~4~~webLink~~~~0&srctype=category&userpath=category%3ECLOTHING&child_cat_id=1727&page=1

这个网站1到10页的信息,一直在调试,但是总是会在某个地方有问题,请教下这段代码是哪里有问题?谢谢!

  • 写回答

3条回答 默认 最新

  • CSDN专家-Time 2021-05-16 13:26
    关注

    一般是页面没有全部被加载,然后程序已经被读取了。或者这个标签根本不存在。

    import requests
    import bs4
    import time
    import random
    import pandas as pd
    import openpyxl
    dress_info=[]
    #获取所有 url
    for i in range(1,10):
       url="https://www.shein.com/Clothing-c-2035.html?ici=www_tab01navbar04&scici=navbar_WomenHomePage~~tab01navbar04~~4~~webLink~~~~0&srctype=category&userpath=category%3ECLOTHING&child_cat_id=1727&page="+str(i)+""
    headers = {
             "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36"
             }
    print("开始爬取SHElN平台女装品类裙子第%s 页信息....." %(str(i)))
    response = requests.get(url=url, headers=headers)
    #生成 bs4 对象
    bsoup=bs4.BeautifulSoup(response.text,'html.parser')
    dress_list=bsoup.find('li', class_="list-item")
    print(dress_list)
    #bs4 解析文件
    for dress in dress_list:    
     photo = dress.find('a').img.jpg()
     titile = dress.find('div', class_='S-product-item__name').text.strip()
     price = dress.find('div', class_='S-product-item__price').text.strip()
     color = dress.find('section', class_='S-product-item__relatecolor-container').text.strip() 
     
     pd1= pd.DataFrame({'photo': photo, 'titile': titile, 'price': price, 'color': color}, index=[0])
     dress_info.append(pd1)
     second=random.randrange(3,5)
     time.sleep(second)
    #数据集
    dress_info2=pd.concat(house_info)
    dress_info2.to_excel('house_info.xlsx',index=False)

     你把lxml换成 html.parser

    然后就发现你获取的页面的li标签压根不存在

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 请教 麒麟系统挂载怎么安装
  • ¥15 如何在ns3中实现路径的自由切换
  • ¥20 SpringBoot+Vue3
  • ¥15 IT从业者的调查问卷
  • ¥65 LineageOs-21.0系统编译问题
  • ¥30 关于#c++#的问题,请各位专家解答!
  • ¥15 App的会员连续扣费
  • ¥15 不同数据类型的特征融合应该怎么做
  • ¥15 用proteus软件设计一个基于8086微处理器的简易温度计
  • ¥15 用联想小新14Pro