【问题标题】:How to export all the Details in the Div using Beautiful soup python to excel/csv?如何使用 Beautiful soup python 将 Div 中的所有详细信息导出到 excel/csv?
【发布时间】:2020-12-23 14:49:36
【问题描述】:

我是 Soup/python 的新手,我正在尝试查找数据。 我的网站结构看起来像这样。

如果我打开 Divclass border class 它看起来像这样。(下图)

我做过这样的事情:

for  P in soup.find_all('p', attrs={'class': 'bid_no pull-left'}) :
  print(P.find('a').contents[0])

一个 div 结构看起来像
每个页面大约有 10 个 div
我想在其中提取项目、数量要求、投标号、结束日期。 请帮帮我

<div class="border block " style="display: block;">
    <div class="block_header">
        <p class="bid_no pull-left"> BID NO: <a style="color:#fff !important" href="/showbidDocument/1844736">GEM/2020/B/763154</a></p> 
        <p class="pull-right view_corrigendum" data-bid="1844736" style="display:none; margin-left: 10px;"><a href="#">View Corrigendum</a></p>

         <div class="clearfix"></div>
    </div>

    <div class="col-block">
        <p><strong style="text-transform: none !important;">Item(s): </strong><span>Compatible Cartridge</span></p>
        <p><strong>Quantity Required: </strong><span>8</span></p>

        <div class="clearfix"></div>
    </div>
    <div class="col-block">
        <p><strong>Department Name And Address:</strong></p>
        <p class="add-height">
            Ministry Of Railways<br> Na<br> South Central Railway N/a
        </p>
        <div class="clearfix"></div>
    </div>
    <div class="col-block">
        <p><strong>Start Date: </strong><span>25-08-2020 02:54 PM</span></p>
        <p><strong>End Date: </strong><span>04-09-2020 03:00 PM</span></p>
        <div class="clearfix"></div>

    </div>


    <div class="clearfix"></div>
</div>

错误图片

【问题讨论】:

  • 如果您尝试过一些东西,请先在此处发布,然后只有有人可以在这方面为您提供帮助,而且您的问题描述含糊不清,很难理解最重要的添加网站 URL。
  • 我无法找到具有相同类“col-block”的文本 @Vin 请帮助

标签: python excel web-scraping beautifulsoup export-to-csv


【解决方案1】:

使用requests美丽的汤尝试以下方法。我使用从网站获取的 URL 创建了脚本,然后创建了一个动态 URL 来遍历每个页面以获取数据。

脚本到底在做什么:

  1. 第一个脚本将创建一个 URL,其中 page_no 查询字符串参数将在每次遍历完成时递增 1。

  2. 请求将使用 get 方法从创建的 URL 中获取数据,然后传递给美丽的汤以使用 lxml 解析 HTML 结构。

  3. 然后从解析的数据脚本中会搜索实际存在数据的div

  4. 最后对每一页的所有div文本数据逐一循环。

    ```python
    import requests
    from urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    from bs4 import BeautifulSoup as bs
    
    def scrap_bid_data():
    
    page_no = 1 #initial page number
    while True:
        print('Hold on creating URL to fetch data...')
        URL = 'https://bidplus.gem.gov.in/bidlists?bidlists&page_no=' + str(page_no) #create dynamic URL
        print('URL cerated: ' + URL)
    
        scraped_data = requests.get(URL,verify=False) # request to get the data
        soup_data = bs(scraped_data.text, 'lxml') #parse the scraped data using lxml
        extracted_data = soup_data.find('div',{'id':'pagi_content'}) #find divs which contains required data
    
        if len(extracted_data) == 0: # **if block** which will check the length of extracted_data if it is 0 then quit and stop the further execution of script.
            break
        else:
            for idx in range(len(extracted_data)): # loops through all the divs and extract and print data
                if(idx % 2 == 1): #get data from odd indexes only because we have required data on odd indexes
                    bid_data = extracted_data.contents[idx].text.strip().split('\n')
                    print('-' * 100)
                    print(bid_data[0]) #BID number
                    print(bid_data[5]) #Items
                    print(bid_data[6]) #Quantitiy Required
                    print(bid_data[10] + bid_data[12].strip()) #Department name and address
                    print(bid_data[16]) #Start date
                    print(bid_data[17]) #End date                   
                    print('-' * 100)
    
            page_no +=1 #increments the page number by 1
    
     scrap_bid_data()
     ```
    

实际代码

输出图像

【讨论】:

  • GETTING THE ERROR URL = 'bidplus.gem.gov.in/bidlists?bidlists&page_no=' + str(page_no) # create dynamic URL NameError: name 'page_no' is not defined
  • 它在我的最后工作确保您的代码正确缩进并且所有导入都可供您参考我还添加了输出图像。
  • 我正在使用 pycharm
  • 逐行添加实际代码图像检查,看看你在哪里做错了。一旦它开始为您工作,请将其标记为已接受。谢谢
  • 检查我刚刚上传的图片并与您的代码进行比较。我该死的肯定你犯了更多的错误,因为它在我的尽头完美地工作,正如预期的那样。我建议你用你的检查每一行图像。
猜你喜欢
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 2020-09-04
  • 2015-05-03
相关资源
最近更新 更多