Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法编写只返回第n个元素的css选择器?_Python_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 有没有办法编写只返回第n个元素的css选择器?

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

有没有一种方法可以编写只返回第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(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选择器应该是什么样子?