Python 有没有办法编写只返回第n个元素的css选择器?
有没有一种方法可以编写只返回第n段的css选择器? 我用Python编写了一段带有BeautifulSoup lib的代码,如下所示:Python 有没有办法编写只返回第n个元素的css选择器?,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,有没有一种方法可以编写只返回第n段的css选择器? 我用Python编写了一段带有BeautifulSoup lib的代码,如下所示: from bs4 import BeautifulSoup, SoupStrainer import requests response = requests.get(url, headers=headers) print(response) soup = BeautifulSoup(response.content, 'html.parser') print
from bs4 import BeautifulSoup, SoupStrainer
import requests
response = requests.get(url, headers=headers)
print(response)
soup = BeautifulSoup(response.content, 'html.parser')
print(soup)
<div class = "article">
<div class = "news">
<p>text 1</p>
<p>text 2</p>
<p>text 3</p>
<p>text 4</p>
<p>text 5</p>
<p>text 6</p>
</div>
</div>
假设我的回答是这样的:
from bs4 import BeautifulSoup, SoupStrainer
import requests
response = requests.get(url, headers=headers)
print(response)
soup = BeautifulSoup(response.content, 'html.parser')
print(soup)
<div class = "article">
<div class = "news">
<p>text 1</p>
<p>text 2</p>
<p>text 3</p>
<p>text 4</p>
<p>text 5</p>
<p>text 6</p>
</div>
</div>
这就是结果:
[<p>text 1</p>, <p>text 2</p>, <p>text 3</p>, <p>text 4</p>, <p>text 5</p>, <p>text 6</p>]
是的,第N个孩子:
仅选择第一个:soup.selectdiv.article div.news p:nth-child1
仅选择第一个和第四个:soup.selectdiv.article div.news p:nth-child1,p:nth-child3
使用公式a+b在1-3范围内选择。a表示循环大小,n表示从0开始的计数器,b表示偏移值:soup.selectdiv.article div.news p:n-child-1n+3
是的,第N个孩子:
仅选择第一个:soup.selectdiv.article div.news p:nth-child1
仅选择第一个和第四个:soup.selectdiv.article div.news p:nth-child1,p:nth-child3
使用公式a+b在1-3范围内选择。a表示循环大小,n表示从0开始的计数器,b表示偏移值:soup.selectdiv.article div.news p:n-child-1n+3
为了将来的帮助,这里是我的一个
from bs4 import BeautifulSoup
html_atag = """<html><body><div class = "article">
<div class = "news">
<p>text 1</p>
<p>text 2</p>
<p>text 3</p>
<p>text 4</p>
<p>text 5</p>
<p>text 6</p>
</div>
</div>
</body>
</html>"""
soup = BeautifulSoup(html_atag, 'lxml')
# select a div class news and the find require p tag.
p = soup.find("div",{'class':'news'}).findAll('p')[1:3]
for i in p:
print(i.text)
为了将来的帮助,这里是我的一个
from bs4 import BeautifulSoup
html_atag = """<html><body><div class = "article">
<div class = "news">
<p>text 1</p>
<p>text 2</p>
<p>text 3</p>
<p>text 4</p>
<p>text 5</p>
<p>text 6</p>
</div>
</div>
</body>
</html>"""
soup = BeautifulSoup(html_atag, 'lxml')
# select a div class news and the find require p tag.
p = soup.find("div",{'class':'news'}).findAll('p')[1:3]
for i in p:
print(i.text)
你是最好的,谢谢我的朋友!你认为你能帮我解决这个问题吗:如果我的元素不仅仅是段落,如果我有跨距等等呢?我可以只做div.news:nth-child1吗?可以访问字体元素吗?我有一个例子是h1,font,p,p,p,font。我只想得到第一个字体,还有p,p,p和最后一个字体。如果我想从第三段到最后一段,css选择器应该是什么样子?你是最好的,谢谢我的朋友!你认为你能帮我解决这个问题吗:如果我的元素不仅仅是段落,如果我有跨距等等呢?我可以只做div.news:nth-child1吗?可以访问字体元素吗?我有一个例子是h1,font,p,p,p,font。我只想得到第一个字体,以及p,p,p和最后一个字体。如果我想从第三段到最后一段,css选择器应该是什么样子?