python - 在Python中从URL中提取片段

标签 python urllib2

我正在迭代 csv 文件中的多个 URL; URL 具有以下结构:

http://www.parool.nl/parool/nl/4024/AMSTERDAM-CENTRUM/article/detail/3751723/2014/09/21
http://www.parool.nl/parool/nl/5/POLITIEK/article/detail/3751624/2014/09/20/VVD-wil-  boete-van-250-euro-voor-het-naroepen-van-vrouwen.dhtml

等等,

我需要获取文章类别(在第四个斜杠之后,在本例中为“AMSTERDAM-CENTRUM”和“POLITIEK”),并将它们附加到列表中。

我正在使用 urllib2:

reader=CsvUnicodeReader(open("my.csv","r"))
for row in reader:
    url = row[0]
    req=urllib2.Request(url)

有没有办法解析URL?

最佳答案

您可以使用urlparse.urlparse将 URL 拆分为其组件并可靠地提取路径组件,然后使用 regular expression提取您感兴趣的路径的类别部分:

from urlparse import urlparse
import re


URLS = ["http://www.parool.nl/parool/nl/4024/AMSTERDAM-CENTRUM/article/detail/3751723/2014/09/21",
        "http://www.parool.nl/parool/nl/5/POLITIEK/article/detail/3751624/2014/09/20/VVD-wil-boete-van-250-euro-voor-het-naroepen-van-vrouwen.dhtml"]

pattern = re.compile("/parool/nl/\d*/(.*?)/article/detail/.*$")


for url in URLS:
    parsed = urlparse(url)
    match = pattern.match(parsed.path)
    if match:
        category = match.group(1)
        print category

输出:

AMSTERDAM-CENTRUM
POLITIEK
<小时/>

正则表达式注释:

  • \d* 匹配任意数字 (0-9) 0 到多次
  • /(.*?)/ 匹配两个斜杠之间的任何字符零次到多次,非贪婪,并为斜杠之间的部分创建一个组

关于python - 在Python中从URL中提取片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964003/

相关文章:

http - Python,Detect 是一个 URL 需要是 HTTPS 还是 HTTP

python - 处理 spark 数据帧中的非统一 JSON 列

python - pip 轮和覆盖范围 : command not found error

python - 使用 Tornado RequestHandler 时最好的 REST 实现是什么

Python:使用拉丁字符对 URL 进行 URL 编码

python - 如何返回到 Urlopen 对象中的第一行

python - 在 Django 模板中使用字典字典效果不佳

python - 传递 sklearn 管道中的所有列

python - 如何解决 "urllib2.URLError: <urlopen error [Errno 111] Connection refused>"

Python:从 URL 列表中提取网页文本上的字符串