【发布时间】:2020-07-17 19:17:16
【问题描述】:
import bs4
import sqlite3
from urllib.request import urlopen as ureq
from bs4 import BeautifulSoup as soup
#crawling pages in website
for page in range(2, 32):
my_url = 'https://www.bproperty.com/en/dhaka/apartments-for-sale/page-{}/'.format(page)
zclient = ureq(my_url)
data_html = zclient.read()
zclient.close()
data_soup = soup(data_html, "html.parser")
contents = data_soup.findAll("li", {"class": "ef447dde"})
#extracting needed data only
for container in contents:
Ad_Title = container.a["title"]
amount = container.findAll("div", {"class": "cd6d5974 d8b3c34d"})
price = amount[0].text
area = container.findAll("div", {"class": "_7afabd84"})
property_location = area[0].text
category = container.findAll("div", {"class": "_9a4e3964"})
listing_category = category[0].text
size = container.findAll("div", {"class": "_22b2f6ed"})
sq_ft = size[0].text
rooms = container.findAll("span", {"class": "b6a29bc0"})
bed_rooms = rooms[0].text
bath_rooms = rooms[1].text
image = container.img["src"]
important_stuff = str(container.script)
#connecting to the database
database = "properties1.db"
conn = sqlite3.connect(database)
#creating a table in sqlite3
conn.execute("""
CREATE TABLE IF NOT EXISTS adverts (
"Ad_Title" TEXT DEFAULT 'Buy Now!',
"price" TEXT,
"property_location" TEXT,
"listing_category" TEXT,
"sq_ft" TEXT,
"bed_rooms" TEXT DEFAULT 2,
"bath_rooms" TEXT DEFAULT 1,
"image" TEXT
);""")
cursor = conn.cursor()
sqlite_insert_query = """INSERT INTO adverts
(Ad_Title, price, property_location, listing_category, sq_ft, bed_rooms, bath_rooms, image)
VALUES (?, ?, ?, ?, ?, ?, ? ,?);"""
data_tuple = (Ad_Title, price, property_location,
listing_category, sq_ft, bed_rooms, bath_rooms, image)
#seeding the database
cursor.execute(sqlite_insert_query, data_tuple)
conn.commit()
conn.close()
【问题讨论】:
-
从您的示例错误值 331300 看起来 3(房间)和 3(浴室)附加到大小,即 1300。
标签: python-3.x sqlite web-scraping beautifulsoup web-crawler