无法使用正则表达式删除网站的某些值

时间:2014-05-15 07:14:00

标签: python regex python-2.7 web-scraping

我一直试图在网站上的特定p标签集中搜索信息并遇到很多麻烦。

我的代码如下:

import urllib   
import re

def scrape():
        url = "https://www.theWebsite.com"

        statusText = re.compile('<div id="holdsThePtagsIwant">(.+?)</div>')
        htmlfile = urllib.urlopen(url)
        htmltext = htmlfile.read()

        status = re.findall(statusText,htmltext)

        print("Status: " + str(status))
scrape()

不幸的是,仅返回:"Status: []"

然而,据说我不知道​​我做错了什么,因为当我在同一个网站上测试时,我可以使用代码

statusText = re.compile('<a href="/about">(.+?)</a>')
相反,我会得到我想要的东西,"Status: ['About', 'About']"

有谁知道我可以做些什么来获取div标签内的信息?或者更具体地说,div标签包含的单个p标签集?我已经尝试插入任何我能想到的并且无处可去的价值观。在Google,YouTube和SO搜索之后,我现在已经没有想法了。

1 个答案:

答案 0 :(得分:3)

我使用BeautifulSoup来提取html标签之间的信息。假设你想要提取这样一个部门:<div class='article_body' itemprop='articleBody'>...</div> 那么你可以使用beautifulsoup并通过以下方式提取这个部门:

soup = BeautifulSoup(<htmltext>) # creating bs object
ans = soup.find('div', {'class':'article_body', 'itemprop':'articleBody'})

另见bs4的官方documentation

作为一个示例,我已经编辑了您的代码,用于从article bloomberg中提取分部 你可以自己做出改变

import urllib   
import re
from bs4 import BeautifulSoup

def scrape():
    url = 'http://www.bloomberg.com/news/2014-02-20/chinese-group-considers-south-africa-platinum-bids-amid-strikes.html'
    htmlfile = urllib.urlopen(url)
    htmltext = htmlfile.read()
    soup = BeautifulSoup(htmltext)
    ans = soup.find('div', {'class':'article_body', 'itemprop':'articleBody'})
    print ans
scrape()

你可以从here

获得BeautifulSoup

P.S。 :我使用scrapy和BeautifulSoup进行网页抓取,我对此感到满意