Pandas 使用 RegEx 和 lxml 中的列表



我正在尝试从符合特定标准的网站中抓取所有URL。我的代码如下:

  import pandas as pd
  from urllib.request import urlopen
  import lxml.html
  links = []
  connection = urlopen("http://www.open.ac.uk/courses/modules")
  dom =  lxml.html.fromstring(connection.read())
  for link in dom.xpath('//a/@href'): 
      links.append(link)

这让我在列表中获得了 URL。但是,我只想要以/[一些字母][3 个数字]结尾的那些。我有以下表达式适用于 www.regex101.com:

  /[a-z]*[0-9][0-9][0-9]

理想情况下,我想修改刮擦,使其仅返回所需的信息。如何使用列表中的表达式对其进行筛选?

找到了一些可以回答我的问题的东西,但没有一个与我的问题相同。

我得到的数据的一个例子是

 /courses/modules/tm352
 /courses/modules/a332
 /courses/modules/ke322
 /courses/modules/e318
 /postgraduate
 #int-site
 http://www.open.ac.uk/contact/
 http://www2.open.ac.uk/tutors/help/who-to-contact
 http://www.open.ac.uk/about/employment/
 http://www.open.ac.uk/about/main/management/policies-and-
 statements/website-accessibility-open-university
 http://www.open.ac.uk/wales/cy

因此,前 4 行与我想要的匹配,其余的不匹配。

试试这个:

df = pd.DataFrame(links)
df[0] = df[0].str.extract('(.+[A-z]+ddd$)', expand=False)
df.loc[df[0].notnull()]

最新更新