我需要在“< b>”中获取信息每个网站的标签。
response = requests.get(href)
soup = BeautifulSoup(response.content, "lxml") # or BeautifulSoup(response.content, "html5lib")
tempWeekend = []
print soup.findAll('b')
soup.findAll('b')行打印网站中的所有b标签,如何将其限制为我想要的日期?
网站为http://www.boxofficemojo.com/movies/?page=weekend&id=catchingfire.htm,位于周末标签下。
答案 0 :(得分:2)
使用CSS选择器进行搜索通常最简单,例如
soup.select('table.chart-wide > tr > td > nobr > font > a > b')
答案 1 :(得分:1)
可悲的是,如果没有进一步识别标签,则无法选择特定的标签。 BeautifulSoup应该如何区分它们。如果您知道在需要的标签中大致期望什么,您可以迭代所有标签并检查它们是否匹配:
for b in soup.findAll('b):
if b.innerHTML == whatever:
return b
或类似的......
或者你可以得到周围的标签,例如你的例子中的'a'
并检查是否匹配,然后下次出现'b'
。
答案 2 :(得分:1)
为什么不搜索所有b
代码,并选择包含一个月的代码?
import requests
from bs4 import BeautifulSoup
s = requests.get('http://www.boxofficemojo.com/movies/?page=weekend&id=catchingfire.htm').content
soup = BeautifulSoup(s, "lxml") # or BeautifulSoup(response.content, "html5lib")
dates = []
for i in soup.find_all('b'):
if i.text.split()[0].upper() in "JAN FEB MAR APR JUN JUL AUG SEP OCT NOV DEC":
dates.append(i.text)
print dates
(注意:我没有检查网站使用的确切缩写。请先检查这些并相应修改代码)
答案 3 :(得分:0)
查看该页面时,它没有任何div
或class
或id
标签,这使得它变得艰难。唯一可以看到日期之前<b>
标记为<b>Date:</b>
的内容的模式是<b>
。我将迭代cellTable = new CellTable<TaskSchedule>();
TextColumn<TaskSchedule> taskNameColumn = new TextColumn<TaskSchedule>() {
@Override
public void render(Cell.Context context,
TaskSchedule object,
SafeHtmlBuilder sb) {
String taskName = getValue(object);
@Override
public String getValue(TaskSchedule object) {
return object.getTaskKey();
}
};
cellTable.addColumn(taskNameColumn, "Task Name");
cellTable.addColumn(createCheckBoxColumn(0), "Monday");
cellTable.addColumn(createCheckBoxColumn(1), "Tuesday");
cellTable.addColumn(createCheckBoxColumn(2), "Wednesday");
cellTable.addColumn(createCheckBoxColumn(3), "Thursday");
cellTable.addColumn(createCheckBoxColumn(4), "Friday");
cellTable.addColumn(createCheckBoxColumn(5), "Saturday");
cellTable.addColumn(createCheckBoxColumn(6), "Sunday");
cellTable.setColumnWidth(cellTable.getColumn(0), 36, Style.Unit.PCT);
cellTable.setColumnWidth(cellTable.getColumn(1), 9, Style.Unit.PCT);
cellTable.setColumnWidth(cellTable.getColumn(2), 9, Style.Unit.PCT);
cellTable.setColumnWidth(cellTable.getColumn(3), 9, Style.Unit.PCT);
cellTable.setColumnWidth(cellTable.getColumn(4), 9, Style.Unit.PCT);
cellTable.setColumnWidth(cellTable.getColumn(5), 9, Style.Unit.PCT);
cellTable.setColumnWidth(cellTable.getColumn(6), 9, Style.Unit.PCT);
cellTable.setColumnWidth(cellTable.getColumn(7), 9, Style.Unit.PCT);
cellTable.setRowData(taskSchedules);
标签,然后在我点击其中的日期后收集标签。
答案 4 :(得分:0)
我会尝试像
这样的东西all_a = site.find_all('a')
for a in all_a:
if '?yr=?' in a['href']:
dates.append(a.get_text())