大甲鱼吃小甲鱼o 发表于 2020-7-18 11:24:32

求助啊,爬虫用for循环只显示第一个数据

def beautiful_soup():
    url = 'http://desk.zol.com.cn/4/' #返回值是418的,意味着有反爬虫机制
    # 有反爬虫机制,所以需要一个伪装的header,header的内容是用户代理(UA),注意ua的实例化需要用字典的方式{}
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"}
    res = requests.get(url,headers = headers)
    print(res)
    # 对下载下来的网页重新编码,这是中文网页的特殊性,不然会乱码
    res = res.content.decode('gb2312','ignore').encode('utf-8','ignore') #ignore意味着忽略乱码部分
    # 使用beautifulsoup的第一步:下载整个网页,以text格式,被parser解析器所解析,存储在soup变量中
    soup = BeautifulSoup(res,'html.parser')
    all = soup.find_all('ul',attrs={'class':'pic-list2 clearfix'})   #attrs是特殊变量,用它是因为class与python自带的class定义重名,我们用attrs包裹一下
    # 接下来,用get_text()函数,显示title-a标签包含的纯文本内容,用get('href')获取图片的url
    print(all_img_tag)
    for each in all:
      link = each.find('li').find('a')['href']
      title = each.find('li').find('a').find('img')['alt']
      print(str(title) + str(link))

代码是这样,all打印结果包含网页全部想爬的内容,但是for历遍却只能打印第一个需要的数据,求解

大甲鱼吃小甲鱼o 发表于 2020-7-18 11:28:42

急,在线等

大甲鱼吃小甲鱼o 发表于 2020-7-18 11:43:06

我发现问题好像是,我查找到的all,似乎不是个字典格式的,for循环里的each直接等于all的所有数据。。。。。

大甲鱼吃小甲鱼o 发表于 2020-7-18 12:13:26

怎么删帖。。我自己解决了,原因是网页没分析好

陈尚涵 发表于 2020-7-19 18:18:58

大甲鱼吃小甲鱼o 发表于 2020-7-18 12:13
怎么删帖。。我自己解决了,原因是网页没分析好

那你也别删帖了,给我设置个最佳答案怎么样

dgust 发表于 2020-7-19 19:04:50

那你也别删帖了,给我设置个最佳答案怎么样
页: [1]
查看完整版本: 求助啊,爬虫用for循环只显示第一个数据