簡體   English   中英

使用Python和Beautifulsoup進行爬取

[英]Scraping with Python and Beautifulsoup

Beautifulsoup繼續-在數據列表中抓取鏈接時遇到麻煩

這是我使用Python / Beautifulsoup抓取的HTML的示例:

<dl>
<dd>
    <strong>
        <a name="45933" href="http://www.eslcafe.com/jobs/china/index.cgi?read=45933">TOP RANKING UNIVERSITY SEEKS PROFESSIONAL LECTURERS</a>
    </strong>
    <br>
    Chongqing University -- Tuesday, 14 March 2017, at 6:58 a.m.
</dd>

<dd></dd>
<dd></dd>
<dd></dd>
</dl>

這是我的程序:

import bs4 as bs
import urllib.request


def chinaJobs():
    sauce = urllib.request.urlopen('http://www.eslcafe.com/jobs/china/').read()

    soup = bs.BeautifulSoup(sauce, 'html.parser')

    ads = []

    for dd in soup.find_all('dd'):
        link = dd.a.get('href')
        link_text = dd.a.text
        link_text = link_text.lower()
        *_, dd_text = dd.stripped_strings

        if 'university' in link_text:
            ads.append([link, link_text, dd_text])

    for ad in ads:          
        for job in ad:
            print(job)
        print("")

chinaJobs()

我可以在<br>標記之后獲取信息,但這是錯誤的信息。 這是網站上的信息的樣子:

排名最高的大學課程專業講師

重慶大學-2017年3月14日,星期二,上午6:58

這是我希望輸出看起來像的樣子:

http://www.eslcafe.com/jobs/china/index.cgi?read=45933
top ranking university seeks professional lecturers
Chongqing University -- Tuesday, 14 March 2017, at 6:58 a.m.

這是我的輸出結果:

http://www.eslcafe.com/jobs/china/index.cgi?read=45933
top ranking university seeks professional lecturers
EnglishTeacherChina.com -- Sunday, 12 February 2017, at 1:45 p.m.

這與每個輸出一起打印:

EnglishTeacherChina.com-2017年2月12日,星期日,下午1:45

您為什么認為它正在執行此操作,我該如何解決?

您要查找的字符串包裝在<br>標記中,一種選擇是簡單地使用br提取它:

soup.find("dd").a.text
# u'TOP RANKING UNIVERSITY SEEKS PROFESSIONAL LECTURERS'

soup.find('dd').a.get("href")
# u'http://www.eslcafe.com/jobs/china/index.cgi?read=45933'

soup.find('dd').br.text.strip()
# u'Chongqing University -- Tuesday, 14 March 2017, at 6:58 a.m.'

您可以嘗試將dd_text行更改為dd_text = dd.br.text.strip()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM