【问题标题】:Scraping information using BeautifulSoup使用 BeautifulSoup 抓取信息
【发布时间】:2020-04-02 23:04:12
【问题描述】:

我需要获取有关以下字段的一些信息:

Website Address 
Last Analysis
Blacklist Status
Domain Registration
Server Location

来自这个网站:

https://www.urlvoid.com/scan/gordonramsay.com/

我使用 requests 和 BeautifulSoup 来访问网站并抓取信息:

import requests
from bs4 import BeautifulSoup

r = requests.get('https://www.urlvoid.com/scan/gordonramsay.com/')
soup = BeautifulSoup(r.content, 'lxml')

但是我无法选择这些字段。 这些字段应作为数据集中的单独列添加。 您对如何获取该信息并添加为列的字段有任何建议吗?

我们非常欢迎任何帮助。

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    试试:

    tab = soup.select("table.table.table-custom.table-striped")
    dat = tab[0].select('tr')
    for d in dat:
        row = d.select('td')
        print(row[0].text,' ',row[1].text)
    

    输出:

    Website Address   Gordonramsay.com
    Last Analysis   5 years ago  |   Rescan
    Blacklist Status   0/34
    Domain Registration   2000-02-03 | 20 years ago
    Domain Information    WHOIS Lookup | DNS Records | Ping
    IP Address   89.206.225.168   Find Websites  |  IPVoid  |  Whois
    Reverse DNS   unallocated.star.net.uk
    ASN   AS6656 Star Technology Services Limited
    Server Location    (GB) United Kingdom
    Latitude\Longitude   51.9864 / -4.5578    Google Map
    City   Star
    Region   Pembrokeshire
    

    如果您只想输出 5 个特定条目,请使用:

    tab2 = soup.select("table.table.table-custom.table-striped tr")
    targets = ['Website Address', 'Last Analysis', 'Blacklist Status', 'Domain Registration', 'Server Location']
    for t in tab2:
        item = t.select('td')
        if len(item)==2 and item[0].text in targets:
            print(item[0].text, ' ', item[1].text)
    

    输出:

    Website Address   Gordonramsay.com
    Last Analysis   5 years ago  |   Rescan
    Blacklist Status   0/34
    Domain Registration   2000-02-03 | 20 years ago
    Server Location    (GB) United Kingdom
    

    【讨论】:

    • 非常感谢您的帮助,杰克。
    • @Val 很高兴它有帮助!
    • 嗨,杰克,只是一个简单的问题:我如何迭代不同的查询?我尝试了以下方法:queries=['bbc.com','bbc.co.uk', 'thesun'] for x in queries: query=x r = requests.get('https://www.urlvoid.com/scan/'+x+'.it/') soup = BeautifulSoup(r.content, 'lxml') tab = soup.select("table.table.table-custom.table-striped") dat = tab[0].select('tr') for d in dat: row = d.select('td') print(row[0].text,' ',row[1].text) c += 1 但它不起作用,因为dat = tab[0].select('tr') 超出范围。
    • @Val 在您的requests.get('https://www.urlvoid.com/scan/'+x+'.it/') 中,最后的.it 是什么?例如,您是否在寻找bbc.com.it
    • @Val - 我做到了;检查答案。
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多