使用Python SqlAlchemy存储Scraped WebPage

时间:2016-09-02 16:50:14

标签: python web-scraping sqlalchemy

我做了许多网页浏览和浏览,我想将响应存储在数据库中,以避免再次请求它们(提高速度但也不会造成麻烦)。我正在使用sqlalchemy和python,我已经创建了一个ORM类,如下所示:

class MyClass(Base):
    __tablename__ = "myclass"
    url = Column(String, primary_key=True)
    article = Column(String)

创建新文章并将其添加到我的会话中时,即:

session.add(MyClass(url=url,article=requests.get(url).text)

我可以将它添加到数据库中。但是,当我查询数据库中的url时,我收到此消息,

OperationalError: (sqlite3.OperationalError) unrecognized token: ':' [SQL: u'SELECT http://[mywebsite]]

我知道它在http://中遇到了':'但是我想知道是否是这种情况,有没有办法使用完整的网址作为主键?

此外,在存储效率和用于存储网页及其相应内容的查找效率方面,推荐的数据类型是什么?

1 个答案:

答案 0 :(得分:-1)

我认为,在存储之前转义网址会解决问题。

例如:

article = requests.get(url).text
url = url.replace(":", "COLON")
session.add(MyClass(url=url,article=article)

以类似的方式,您可以在数据输出时将其恢复