在 BeautifulSoup python 中搜索特定字词

search a specific word in BeautifulSoup python

我正在尝试制作一个 python 脚本来读取 crunchyroll 的页面并为我提供字幕的 ssid。

例如:- http://www.crunchyroll.com/i-cant-understand-what-my-husband-is-saying/episode-1-wriggling-memories-678035

去源码里找ssid,我想提取这个元素ssid后面的数字

 <a href="/i-cant-understand-what-my-husband-is-saying/episode-1-wriggling-memories-678035?ssid=154757" title="English (US)">English (US)</a>

我想提取“154757”,但我的脚本似乎无法运行

这是我当前的脚本:

import feedparser
import re
import urllib2
from urllib2 import urlopen
from bs4 import BeautifulSoup


feed = feedparser.parse('http://www.crunchyroll.com/rss/anime')
url1 = feed['entries'][0]['link']
soup = BeautifulSoup(urlopen(url1), 'html.parser')

如何修改我的代码以搜索和提取该特定号码?

这应该让您开始能够为每个条目提取 ssid。请注意,其中一些 link 没有任何 ssid 因此您必须考虑到一些错误捕获。这里不需要 reurllib2 模块。

import feedparser
import requests
from bs4 import BeautifulSoup


d = feedparser.parse('http://www.crunchyroll.com/rss/anime')
for url in d.entries:
    #print url.link
    r = requests.get(url.link)
    soup = BeautifulSoup(r.text)
    #print soup
    subtitles = soup.find_all('span',{'class':'showmedia-subtitle-text'})
    for ssid in subtitles:
        x = ssid.findAll('a')
        for a in x:
            print a['href']

输出:

--snip--
/i-cant-understand-what-my-husband-is-saying/episode-12-baby-skip-beat-678057?ssid=166035
/i-cant-understand-what-my-husband-is-saying/episode-12-baby-skip-beat-678057?ssid=165817
/i-cant-understand-what-my-husband-is-saying/episode-12-baby-skip-beat-678057?ssid=165819
/i-cant-understand-what-my-husband-is-saying/episode-12-baby-skip-beat-678057?ssid=166783
/i-cant-understand-what-my-husband-is-saying/episode-12-baby-skip-beat-678057?ssid=165839
/i-cant-understand-what-my-husband-is-saying/episode-12-baby-skip-beat-678057?ssid=165989
/i-cant-understand-what-my-husband-is-saying/episode-12-baby-skip-beat-678057?ssid=166051
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=166011
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=165995
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=165997
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=166033
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=165825
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=166013
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=166009
/urawa-no-usagi-chan/episode-11-if-i-retort-i-lose-678873?ssid=166003
/etotama/episode-11-catrat-shuffle-678659?ssid=166007
/etotama/episode-11-catrat-shuffle-678659?ssid=165969
/etotama/episode-11-catrat-shuffle-678659?ssid=166489
/etotama/episode-11-catrat-shuffle-678659?ssid=166023
/etotama/episode-11-catrat-shuffle-678659?ssid=166015
/etotama/episode-11-catrat-shuffle-678659?ssid=166049
/etotama/episode-11-catrat-shuffle-678659?ssid=165993
/etotama/episode-11-catrat-shuffle-678659?ssid=165981
--snip--

还有更多,但为简洁起见,我将它们排除在外。从这些结果中,您应该能够通过一些切片轻松地解析出 ssid,因为看起来 ssid 都是 6 位数字长。做类似的事情:

print a['href'][-6:]

会成功,让你 只是 ssid