【问题标题】:Data scraping by selenium p tag通过 selenium p 标签抓取数据
【发布时间】:2022-01-23 07:51:06
【问题描述】:

我在互联网上搜索了很多。我找不到与下面类似的示例。我正在尝试从网页中提取文本。第一个 p 标签中没有定位线。第二定位部分具有定位线。拉取数据的时候只能拉取p标签的内容,也就是位置行。我无法提取另一个 p 标签的内容。我想知道如何在第一个和第二个 p 标签中提取数据?

页面来源的HTML代码:

<div class=" col-md-8">
    <p>                                                                       
    <i class='fa fa-home main-color'></i> ORHAN MAH.İBRAHİM CAD. NO:35  
    <br>
    <i class='fa fa-phone main-color'></i> 
    <a class="gri" href="tel:0508-2920344">0508-2920344 </a>
    <br /> 
    <i class='fa fa-clock-o main-color'></i> 
    <span class="red">19.01.2022</span>     
    </p>
    <p>
       <i class='fa fa-home main-color'></i> HAZAN MAH.ÖKTEM CAD. NO:13/B                                           
    <br>
    <i class='fa fa-phone main-color'></i> 
    <a class="gri" href="tel:0584 837 23 70">0584 837 23 70 </a>
    <br>
    <i class="fa fa-map-marker main-color"></i> 
    <a class="gri" href="https://www.google.com/maps?q=35.554433,25.887766" target="_blank">Haritada</a>
    <br /> 
    <i class='fa fa-clock-o main-color'></i> 
    <span class="red">20.01.2022</span> 
    </p>
</div>

这是我用来从上面的 HTML 源中提取数据的 selenium 代码:​​

item = browser.find_elements_by_class_name("col-md-10")
urls = browser.find_elements_by_xpath("//div[@class=' col-md-10']/p/a[2]")
for i in zip(item,urls):
    try:            
        address = i[0].find_element_by_css_selector("p").text.split("\n")[:2]
    except:
        address = None
    try:            
        phone = i[0].find_element_by_xpath("//a[@class='gri'][1]").text
    except:
        phone = None
    print(address)
    print(phone)
    try:
        url = i[1].get_attribute('href').replace("https://www.google.com/maps?q=","")
    except:
        url = None
    try:            
        date = i[0].find_element_by_xpath("//span[@class='red'][1]").text
    except:
        date = None
    print(url)
    print(date)

【问题讨论】:

  • 您能否分享一个指向该页面的链接并说明您要在那里抓取哪些数据?另外,您当前的代码到底有什么问题?
  • 问题有点混乱,我看到divcol-md-8 有2 个p 标签?是否要提取 p 标签?
  • 这听起来像X-Y problem。与其寻求解决问题的帮助,不如编辑您的问题并询问实际问题。你想做什么?

标签: selenium web screen-scraping


【解决方案1】:

使用 xpath //div[@class=' col-md-8']/p。这将返回两个 p 标签的数据。 然后您可以根据您的要求执行字符串操作,并使用for循环使用每个p标签的数据

【讨论】:

  • 非常感谢您的关注。然而,一切都没有改变。如果下面的位置部分不存在,我可以在两个 p 标签中提取数据。我想要的是在第一个 p 标签的位置部分打印“YOK”,并从第一个和第二个 p 标签中提取数据。尝试:url = i[1].get_attribute('href').replace("google.com/maps?q=","") 除外:url = None
【解决方案2】:

1.p 标签博客没有位置部分。 2.p 标签博客有一个位置部分。在我想要的 1.p 标签中,我想打印 none 而不是 p 博客中的位置。当我尝试定期使用 zip_longest 拉动时,位置无法拉动。

#1.p 标签块 ORHAN MAH.İBRAHİM CAD。编号:35
0508-2920344
19.01.2022

#2.p 标签块 HAZAN MAH.ÖKTEM CAD。 NO:13/B
0584 837 23 70
哈里达
20.01.2022

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 我认为你应该在你的问题中包含这个阐述。
猜你喜欢
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 2021-11-03
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
相关资源
最近更新 更多