Products
GG网络技术分享 2025-03-18 16:14 5
我在用正则表达式爬取豆瓣电影里面的电影演员信息。
网页演员信息的位置如下:
那么要爬取其中的这些演员名不就是下面的代码吗?
actors = re.findall(r\'<div class=\"meta abstract_2\">(.*?)</div>\', resp, re.DOTALL)
其中resp是前面获取到的网页代码
可是print(actors)输出结果为空,请问是哪里不对呀?
有没有大佬就用正则表达式帮忙解答一下?因为我用爬虫只会用正则表达式匹配。
爬虫内容解析比较方便的不是正则而是 xpath ,语法也很容易,建议试试这种:
from lxml import etree # 解析页面的模块html = etree.HTML(top_page)# top_page 你的代码中的页面 text
result = html.xpath(\'//div[@class=\\\"meta abstract_2\\\"]text()\') # 得到 div 的文本内容。
你确定resp是网页文本内容?
不是语法的问题,是你获得的请求里压根没有你想要的数据,那些演员等等数据不是你第一次get的页面里的,是后续用js传的
典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。 而通过使用正则表达式,可以:
正则表达式语法由字符和操作符构成, 字母和数字表示他们自身。标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。 常用的操作符模式如下:
re库的主要功能函数:
re.search()
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 re.match()
从一个字符串的开始位置起匹配正则表达式,返回match对象 re.findall()
搜索字符串,以列表类型返回全部能匹配的子串 re.split()
将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 re.finditer()
搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象 re.sub()
在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 [A‐Z]
能够匹配小写字符re库的另一种等价用法(编译)
re 库的贪婪匹配和最小匹配
.*
Re库默认采用贪婪匹配,即输出匹配最长的子串*?
只要长度输出可能不同的,都可以通过在操作符后增加?变成最小匹配1.删除文本中的特殊符号
Demand feedback