cards2 = soup.find_all('div',class_='product ')
class的属性值我是复制粘贴过来的,find其他的div上没有问题,可是就是这个总是给我返回空列表
网址为:https://list.tmall.com/search_product.htm?q=%CA%D6%BB%FA
请大神们帮忙看看是怎么回事
这个div的内容是不是ajax异步加载的。这样你查找的时候,可能数据还没有填充进来
#!usr/bin/env python
#_*_ coding:utf-8 *
import requests
from bs4 import BeautifulSoup
import lxml
url='https://list.tmall.com/search_product.htm?q=%CA%D6%BB%FA'
html=requests.get(url)
res=html.text
print(res)
soup=BeautifulSoup(res,"lxml")
cards2 = soup.find_all('div',attrs={'class':"product "})
print('------------------------')
print(cards2)
看不了你的网页:打开是登录窗口,你的网站是天猫网,很有可能ajax异步加载,
用class找不了,换个别的比如data-atp就行了,我也不知道原理,希望有人知道了能解答一下。
1、class="product " 你复制的内容不对,里面还有空格,把整个双引号全复制
2、with req.urlopen(request) as respones:
data=respones.read()
data=open(data,'w',encoding='utf-8')#这个为了防止解码问题
3、 root=bs4.BeautifulSoup(data,'html.parser')
print(root)#解码问题解决
4、后面就正常爬取
card=root.find_all('div',class_="product ")
print(card)
问题都这么久了不知道能帮上忙