Python 查找具有指定ID regex的xpath

Python 查找具有指定ID regex的xpath,python,xpath,web-scraping,Python,Xpath,Web Scraping,我正在尝试使用以下方法刮取网页:您可以使用css选择器,而不是使用正则表达式首先获取适当的id。我确实注意到您使用的是scrapy,但同样的原则也应该适用 from bs4 import BeautifulSoup import re html = ''' <html> <head></head> <body> <li id="size_name_1" > me </li> <li id="size_na

我正在尝试使用以下方法刮取网页:
  • 您可以使用css选择器,而不是使用正则表达式首先获取适当的id。我确实注意到您使用的是scrapy,但同样的原则也应该适用

    from bs4 import BeautifulSoup
    import re
    
    html = '''
    <html>
     <head></head>
     <body>
      <li id="size_name_1" > me </li>
      <li id="size_name_2" > and me </li>
      <li id="size_name_a" > but not me :-(</li>
     </body>
    </html>
    '''
    
    p = re.compile(r'id="(size_name_\d+)"')
    ids = p.findall(html)
    soup = bs(html, 'lxml')
    
    for i in ids:
        print(soup.select_one(f'li[id="{i}"]'))
    
    从bs4导入美化组
    进口稀土
    html=“”
    我
  • 和我
  • 但不是我:-(
  • ''' p=re.compile(r'id=“(size\u name\ud+)”) ids=p.findall(html) soup=bs(html,“lxml”) 对于ID中的i: 打印(soup.select_one(f'li[id=“{i}”]”)
    如果需要在id属性中查找所有包含size\u name的id,请尝试以下操作:“/*[包含(@id,'size\u name')]”。此操作应返回所有包含这些元素的元素id@Sureshmani我可以,但这也会返回带字母的元素。您不能在XPath中使用类似的正则表达式。您正在寻找,但我不知道scrapy是否支持XPath 2.0。您需要使用正则表达式还是只能使用XPath?
    from bs4 import BeautifulSoup
    import re
    
    html = '''
    <html>
     <head></head>
     <body>
      <li id="size_name_1" > me </li>
      <li id="size_name_2" > and me </li>
      <li id="size_name_a" > but not me :-(</li>
     </body>
    </html>
    '''
    
    p = re.compile(r'id="(size_name_\d+)"')
    ids = p.findall(html)
    soup = bs(html, 'lxml')
    
    for i in ids:
        print(soup.select_one(f'li[id="{i}"]'))