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

想爬取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标签压根不存在

     

    点赞 打赏 评论
  • 关心 YUENTO LEI 2021-05-16 17:47

    我改了以后,但出现TypeError了,我在站里查询了下,但是没有看懂。请问这种该怎么改?

    点赞 打赏 评论
  • 有问必答小助手 2021-05-17 16:42

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 打赏 评论

相关推荐 更多相似问题