1835575828 发表于 2021-11-10 22:07:00

正则提取很基础的问题

如题 关键在find_all那边那里,添加 style='font-size: 24px;'后返回的就是空列表,不添加这段文字返回的就是需要的文段,可是html源代码也是有这个的啊,我复制粘贴的。
还有一个就是不知道为什么我idle运行出来的结果返回的是一行的,不像看视频里面多行的。
望大佬解答



import requests
from bs4 import BeautifulSoup
import re
html = 'https://www.bbiquge.net/book_104535/53673443.html'
req = requests.get(html)
req = req.text
soup = BeautifulSoup(req,'html.parser')
texts = soup.find_all('div',id = 'content', style='font-size: 24px;')
print(texts)

suchocolate 发表于 2021-11-10 23:07:17

浏览器的码源是经过浏览器经过css和js渲染过的,而爬虫的是没有渲染过的,不一样很正常。
我看了一下,爬虫拿到的是没有的。
你可以用下面的代码看看。
html = 'https://www.bbiquge.net/book_104535/53673443.html'
headers = {'user-agent': 'Mozilla'}
r = requests.get(html, headers=headers)
with open('r.txt', 'w', encoding='utf-8') as f:
    f.write(r.text)
至于视频里的是多行,需要你贴一下你看的视频里的代码。

1835575828 发表于 2021-11-11 10:30:26

suchocolate 发表于 2021-11-10 23:07
浏览器的码源是经过浏览器经过css和js渲染过的,而爬虫的是没有渲染过的,不一样很正常。
我看了一下,爬 ...

好的谢谢 还有个正则表达的问题 texts = soup.find_all('div',id = 'content', style='font-size: 24px;') 这段代码查找不到所需要的列表,而texts = soup.find_all('div',id = 'content)却能找到

suchocolate 发表于 2021-11-11 10:43:52

1835575828 发表于 2021-11-11 10:30
好的谢谢 还有个正则表达的问题 texts = soup.find_all('div',id = 'content', style='font-size: 24px;' ...

看图,get到的码源里没有style,style是浏览器渲染的。
页: [1]
查看完整版本: 正则提取很基础的问题