爬虫
请问大佬们,爬取这个网站 的信息,它的演员信息一会是演员,一会是主演,用不了正则,该用什么方法呢,这是其中一个详情页https://www.ygdy8.net/html/gndy/jddy/20230629/63860.html爬取网站信息时,如果页面的结构复杂或者内容呈现形式不规律,正则表达式可能会变得复杂且难以维护。在这种情况下,可以考虑使用解析库,如BeautifulSoup或lxml,来处理HTML页面。
以下是一个使用BeautifulSoup来解析网页并提取演员信息的示例代码:
python
import requests
from bs4 import BeautifulSoup
# 发送GET请求获取页面内容
url = 'https://www.ygdy8.net/html/gndy/jddy/20230629/63860.html'
response = requests.get(url)
html = response.content
# 创建BeautifulSoup对象
soup = BeautifulSoup(html, 'html.parser')
# 使用CSS选择器提取演员信息
actor_elements = soup.select('div.co_content8 ul table:nth-child(2) tr:nth-child(n+2) td:nth-child(2) a')
actors =
# 输出演员信息
for actor in actors:
print(actor)
在上述示例中,我们使用了requests库发送GET请求获取网页内容,并使用BeautifulSoup解析HTML页面。通过使用CSS选择器div.co_content8 ul table:nth-child(2) tr:nth-child(n+2) td:nth-child(2) a,我们选择到了演员信息所在的元素。然后,我们遍历选取到的元素,提取出演员的文本内容,并将其存储在actors列表中。
请注意,示例代码中的CSS选择器仅适用于给定的详情页,如果网站结构不稳定或不一致,您可能需要根据不同页面的结构进行相应的调整。
希望这个示例能够帮助到您!如果还有其他疑问,请随时提问。 怎么用不了正则?你匹配演员或主演不就行了
正则:
(演\s{2}员|主\s{2}演)
isdkz 发表于 2023-7-6 11:04
怎么用不了正则?你匹配演员或主演不就行了
正则:
那请问一下,如果有的页面有豆瓣评分,有的没有,没有的默认一个数值,这种该怎么写呢 isdkz 发表于 2023-7-6 11:04
怎么用不了正则?你匹配演员或主演不就行了
正则:
还有这个该怎么修改成这个形式呢,小括号里的不是会被提取出来吗
actor_pattern = re.compile('◎演 员(.*?)◎', re.S) 哈岁NB 发表于 2023-7-6 11:11
还有这个该怎么修改成这个形式呢,小括号里的不是会被提取出来吗
用非保存分组就不会被提取出来了
actor_pattern = re.compile('◎(?:演 员|主 演)(.*?)◎', re.S) isdkz 发表于 2023-7-6 11:14
用非保存分组就不会被提取出来了
好的,感谢感谢 陶远航 发表于 2023-7-6 11:00
爬取网站信息时,如果页面的结构复杂或者内容呈现形式不规律,正则表达式可能会变得复杂且难以维护。在这种 ...
好的,感谢感谢 本帖最后由 isdkz 于 2023-7-6 11:21 编辑
哈岁NB 发表于 2023-7-6 11:08
那请问一下,如果有的页面有豆瓣评分,有的没有,没有的默认一个数值,这种该怎么写呢
给个例子:
import re
string = "◎豆瓣评分 6.4/10 from 3135 users"
pattern = r'◎豆瓣评分\s+(.*)'
result = match.group(1) if (match := re.search(pattern, string)) else "NULL" isdkz 发表于 2023-7-6 11:19
给个例子:
好的,感谢感谢 你哪来的旧EDGE?! 歌者文明清理员 发表于 2023-7-6 12:31
你哪来的旧EDGE?!
电脑自带的呀,怎么了吗 哈岁NB 发表于 2023-7-6 13:12
电脑自带的呀,怎么了吗
旧电脑? 歌者文明清理员 发表于 2023-7-6 13:14
旧电脑?
是的
页:
[1]