【发布时间】:2019-11-20 23:44:22
【问题描述】:
我在使用 Python 3.8 和 BeautifulSoup 抓取网页时遇到了问题,但我遇到了一个我无法解决的问题。我正在抓取的页面有两个相似的 div 标签,它们都包含一个 id 值,但是一个还包含一个额外的类容器:
例如,第一个标签返回:;第二个标签返回。
我可以使用 "page = soup.find_all('div', { "id" : "race-1"})" 找到标签,但这会返回两个 div。有没有办法只找到包含“”的div?我只想要这个,因为这个 div 标签中的数据格式对我来说更容易使用。
我已经提取了我正在使用的代码的以下相关部分:
from bs4 import BeautifulSoup
import csv
import bleach
import os.path
from os import path
def scrape(racedate, location, races, pageurl):
if path.exists("ResultsData.csv"):
f = csv.writer(open('ResultsData.csv', 'a', newline='')) #Use
else:
f = csv.writer(open('ResultsData.csv', 'a', newline='')) #Use
f.writerow(['RaceDate', 'RaceLocation', 'RaceNumber', 'RaceName', 'Distance', 'RaceClass', 'PrizeMoney', 'RaceSplits', 'Place', 'BoxNo', 'DogName', 'Trainer', 'Time', 'Margin', 'Split', 'InRun', 'Weight', 'Sire', 'Dam', 'SPrice'])
page = requests.get(pageurl)
# Create a BeautifulSoup object
soup = BeautifulSoup(page.text, 'lxml')
file1 = open("MyFile.txt","a")
raceid = "race-1"
page = soup.find_all('div', { "id" : raceid})
file1.write(str(page))
scrape('2019/11/16', 'ipswich', '10', 'https://www.thegreyhoundrecorder.com.au/results/ipswich/68024')
无论如何,我都不是开发人员,因此非常感谢任何帮助。
【问题讨论】:
-
你能分享两个div的例子吗?
标签: python html beautifulsoup screen-scraping