html页面的python抓取日期(2017年6月10日)

html页面的python抓取日期(2017年6月10日),python,beautifulsoup,screen-scraping,Python,Beautifulsoup,Screen Scraping,如何从包含下表数据的html页面中提取日期“2017年6月3日”。日期将根据订单号更改。我不确定我是否正确使用了它。请告知 <tr> <td style="font:bold 24px Arial;">Order #12345</td> <td style="font:13px Arial;"><strong>Order Date:</strong> June 03, 2017</td> </

如何从包含下表数据的html页面中提取日期“2017年6月3日”。日期将根据订单号更改。我不确定我是否正确使用了它。请告知

<tr>
   <td style="font:bold 24px Arial;">Order #12345</td>
    <td style="font:13px Arial;"><strong>Order Date:</strong> June 03, 2017</td>
</tr>
执行上述代码后,我得到以下错误

Error :
['Order #12345']
Traceback (most recent call last):
  File "test.py", line 24, in <module>
    od = soup.find_all(text=re.compile("Order Date")).next_element()
AttributeError: 'ResultSet' object has no attribute 'next_element'
错误:
[“订单#12345”]
回溯(最近一次呼叫最后一次):
文件“test.py”,第24行,在
od=soup.find_all(text=re.compile(“订单日期”)).next_元素()
AttributeError:'ResultSet'对象没有属性'next\u element'

如果您试图解析页面上的其他表,则这可能不理想。如果只有一个表,这应该可以工作

EDIT:添加了如何从字符串解析实际日期的示例

In[19]: from datetime import datetime
   ...: 
   ...: from bs4 import BeautifulSoup
   ...: 
   ...: html = '''\
   ...: <tr>
   ...:    <td style="font:bold 24px Arial;">Order #12345</td>
   ...:     <td style="font:13px Arial;"><strong>Order Date:</strong> June 03, 2017</td>
   ...: </tr>
   ...: '''
   ...: soup = BeautifulSoup(html, 'lxml')
   ...: 
   ...: for row in soup.find_all('tr'):
   ...:     order_number, order_date = row.find_all('td')
   ...:     print(order_number.text)
   ...:     print(order_date.text)
   ...:     d = datetime.strptime(order_date.text, 'Order Date: %B %d, %Y')
   ...:     print(d.year, d.month, d.day)
   ...: 
Order #12345
Order Date: June 03, 2017
2017 6 3
[19]中的
:从日期时间导入日期时间
...: 
…:从bs4导入BeautifulSoup
...: 
…:html=''\
...: 
…:订单#12345
…:订单日期:2017年6月3日
...: 
...: '''
…:soup=BeautifulSoup(html,“lxml”)
...: 
…:对于汤中的行。查找所有('tr'):
…:订单号,订单日期=行。查找所有('td'))
…:打印(订单号.文本)
…:打印(订单日期文本)
…:d=datetime.strtime(order_date.text,'订单日期:%B%d,%Y')
…:打印(d.年、d.月、d.日)
...: 
订单号#12345
订单日期:2017年6月3日
2017 6 3
或者

>>> import requests
>>> import bs4
>>> soup = bs4.BeautifulSoup('''\
... <tr>
...     <td style="font:bold 24px Arial;">Order #12345</td>
...     <td style="font:13px Arial;"><strong>Order Date:</strong> June 03, 2017</td>
... </tr>''', 'lxml')
>>> soup.find_all(text=bs4.re.compile("Order #"))[0][7:]
'12345'
>>> soup.find_all(text=bs4.re.compile("Order Date:"))[0].parent.next.next.strip()
'June 03, 2017'
导入请求 >>>进口bs4 >>>汤=bs4.BeautifulSoup(“”)\ ... …订单#12345 订单日期:2017年6月3日 …“(lxml”) >>>soup.find_all(text=bs4.re.compile(“Order#”))[0][7:] '12345' >>>soup.find_all(text=bs4.re.compile(“订单日期”)[0]。parent.next.next.strip() ‘2017年6月3日’
无需单独导入
重新
,因为它包含在bs4中。我跟随你所做的;也就是说,我查找了文本,然后从那里导航。

您试图调用结果对象列表上的下一个元素,您是否尝试过在列表上循环并调用每个项目上的下一个元素?
>>> import requests
>>> import bs4
>>> soup = bs4.BeautifulSoup('''\
... <tr>
...     <td style="font:bold 24px Arial;">Order #12345</td>
...     <td style="font:13px Arial;"><strong>Order Date:</strong> June 03, 2017</td>
... </tr>''', 'lxml')
>>> soup.find_all(text=bs4.re.compile("Order #"))[0][7:]
'12345'
>>> soup.find_all(text=bs4.re.compile("Order Date:"))[0].parent.next.next.strip()
'June 03, 2017'