【问题标题】:returning only the first Value while i am printing a list在我打印列表时只返回第一个值
【发布时间】:2022-07-04 00:35:56
【问题描述】:

美好的一天, 有人可以帮助我解释为什么当我执行以下代码时我只返回一个值

[![在此处输入图片描述][2]][2]

import requests
from bs4 import BeautifulSoup
import json

my_list = []
def extract(URL):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}
    r = requests.get(url, headers=headers)
    soup = BeautifulSoup(requests.get(url).content, "html.parser")
    return soup.select("[data-tooltip-phones]")

def transform(data):
    for item in data:
        phone_url = "https://yellowpages.com.eg" + item["data-tooltip-phones"]
        title = item.find_previous(class_="item-title").text
        address = item.find_previous(class_="address-text").text.strip().replace('\n', 
'')
        phones = requests.get(phone_url).json()
    business = {
        'name': title,
        'address': address,
        'telephone': phones
    }
    my_list.append(business)
x = 1
data = extract(f'https://yellowpages.com.eg/en/category/charcoal/p{x}')
transform(data)
print(my_list)

【问题讨论】:

    标签: python web-scraping


    【解决方案1】:

    缩进业务并追加行,使其位于 for 循环内:

    for item in data:
            phone_url = "https://yellowpages.com.eg" + item["data-tooltip-phones"]
            title = item.find_previous(class_="item-title").text
            address = item.find_previous(class_="address-text").text.strip().replace('\n', 
    '')
            phones = requests.get(phone_url).json()
            business = {
                'name': title,
                'address': address,
                'telephone': phones
            }
            my_list.append(business)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 2019-03-22
      • 1970-01-01
      相关资源
      最近更新 更多