Web Scraping с использованием BeautifulSoup на Python - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь вычеркнуть название каждого API и категории с этого сайта https://www.programmableweb.com/apis/directory и распечатать их в этом формате

name: Google Maps

Категория: Картография

По какой-то причине мой код печатает только первую строку.


Мой код

from bs4 import BeautifulSoup as bs

import requests

url = 'https://www.programmableweb.com/apis/directory'

response = requests.get(url)

data = response.text

soup = bs(data, 'html.parser')  

info = soup.find_all('table',{'class':'views-table cols-4 table'})



for i in info:

    name = soup.find('td',{'class':'views-field views-field-title col-md-3'}).text
    category = soup.find('td',{'class':'views-field views-field-field-article-primary-category'}).text
    print('name:',name, '\nCategory:', category)

Если вы можете дажепомогите мне еще, что я пытаюсь сделать:

  1. имя API
  2. URL API
  3. категория API
  4. описание API при кликев ссылке
  5. очищать следующие страницы до тех пор, пока не останется ни одной страницы
  6. использовать панд, чтобы превратить их в DataFrame, а затем поместить в CSV-файл

1 Ответ

1 голос
/ 07 октября 2019

Вы не перебираете строки таблицы. Вы находите все теги <table> (которых только 1), а затем пытаетесь перебрать эти теги. Вам нужно найти все теги <tr> внутри тега <table>, а затем выполнить итерацию по <tr> тегов. Вы также извлекаете только первый элемент из объекта soup, а не из объекта info.

Более простое решение, поскольку вам нужен тег <table>, используйте pandasчтобы захватить это (он на самом деле использует BeautifulSoup под капотом). Но он сделает всю эту тяжелую работу для вас:

import pandas as pd

url = 'https://www.programmableweb.com/apis/directory'
table = pd.read_html(url)[0]

Вывод:

print (table.to_string())
                      API Name                                        Description              Category   Submitted
0                  Google Maps  [This API is no longer available. Google Maps'...               Mapping  12.05.2005
1                      Twitter  [This API is no longer available. It has been ...                Social  12.08.2006
2                      YouTube  The Data API allows users to integrate their p...                 Video  02.08.2006
3                       Flickr  The Flickr API can be used to retrieve photos ...                Photos  09.04.2005
4                     Facebook  [This API is no longer available. Its function...                Social  08.16.2006
5   Amazon Product Advertising  What was formerly the ECS - eCommerce Service ...             eCommerce  12.02.2005
6                       Twilio  Twilio provides a simple hosted API and markup...             Telephony  01.09.2009
7                      Last.fm  The Last.fm API gives users the ability to bui...                 Music  10.30.2005
8                   Twilio SMS  Twilio provides a simple hosted API and markup...             Messaging  02.19.2010
9          Microsoft Bing Maps  Bing Maps API and Interactive SDK features an ...               Mapping  12.02.2005
10                 del.icio.us  From their site: del.icio.us is a social bookm...             Bookmarks  10.30.2005
11           Google App Engine  [This API is no longer available. Its function...                 Tools  12.05.2008
12                  Foursquare  The Foursquare Places API provides location ba...                Social  09.10.2009
13             Google Homepage  From their site: The Google Gadgets API provid...               Widgets  12.14.2005
14         DocuSign Enterprise  DocuSign is a Cloud based legally compliant eS...  Electronic Signature  03.29.2008
15                   Amazon S3  Since 2006 Amazon Web Services has been offeri...               Storage  03.14.2006
16              Google AdSense  The Google AdSense API is ideal for developers...           Advertising  06.01.2006
17                    GeoNames  Geonames is a geographical database with web s...             Reference  01.12.2006
18                   Wikipedia  The unofficial Wikipedia API. Because Wikipedi...             Reference  09.05.2008
19                         Box  Box is a modern content management platform th...               Content  03.07.2006
20                  Amazon EC2  The Amazon Elastic Compute Cloud (Amazon EC2) ...                 Cloud  08.25.2006
21                        Bing  [The Bing API is now the Bing Web Search API. ...                Search  06.04.2009
22                    LinkedIn  LinkedIn is the world's largest business socia...                Social  12.10.2007
23             Instagram Graph  Instagram is a photo sharing iPhone app and se...                Photos  12.15.2010
24                 Yelp Fusion  The Yelp Fusion APIs are RESTful APIs and user...       Recommendations  08.03.2007

И если вы нажмете на следующую страницу, вы увидите https://www.programmableweb.com/apis/directory?page=1, так что это просто вопрос итерации по циклу for до конца и добавления к вашему фрейму данных после каждой итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...