Pandas 将 RegEx 与 lxml 中的列表一起使用
Pandas using RegEx with a list in 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。但是,我只想要以 /[some letters][3 numbers] 结尾的那些。我在 www.regex101.com:
上有以下表达式
\/[a-z]*[0-9][0-9][0-9]
理想情况下,我想修改该刮擦,使其仅 returns 所需信息。如何使用列表中的表达式进行筛选?
我找到了一些可以回答我的问题的东西,但没有找到与我的问题相同的东西。
我得到的数据示例是
/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]+\d\d\d$)', expand=False)
df.loc[df[0].notnull()]
我正在尝试从满足特定条件的网站中抓取所有 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。但是,我只想要以 /[some letters][3 numbers] 结尾的那些。我在 www.regex101.com:
上有以下表达式 \/[a-z]*[0-9][0-9][0-9]
理想情况下,我想修改该刮擦,使其仅 returns 所需信息。如何使用列表中的表达式进行筛选?
我找到了一些可以回答我的问题的东西,但没有找到与我的问题相同的东西。
我得到的数据示例是
/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]+\d\d\d$)', expand=False)
df.loc[df[0].notnull()]