小编zwi*_*k86的帖子

快速关系数据库,用于Python的简单使用

对于我的链接抓取程序(用python3.3编写)我想用一个数据库存储大约100.000个网站:

  • 只是URL,
  • 时间戳
  • 并为每个网站列出几个属性

我不了解数据库,但发现以下内容可能符合我的目的:

  • PostgreSQL的
  • SQLite的
  • 火鸟

我对速度感兴趣(访问数据库并获取想要的信息).例如:对于网站x,属性y存在,如果是,请阅读它.写作速度当然也很重要.

我的问题:速度上存在很大差异,还是对我的小程序无关紧要?也许有人可以告诉哪个数据库符合我的要求(并且很容易用Python处理).

python database

7
推荐指数
2
解决办法
1万
查看次数

始终并行运行恒定数量的子进程

我想使用子进程让20个写入脚本实例并行运行.假设我有一个大的网址列表,其中包含100,000个条目,我的程序应该控制我的脚本的20个实例始终在该列表上工作.我想按如下方式编写代码:

urllist = [url1, url2, url3, .. , url100000]
i=0
while number_of_subproccesses < 20 and i<100000:
    subprocess.Popen(['python', 'script.py', urllist[i]]
    i = i+1
Run Code Online (Sandbox Code Playgroud)

我的脚本只是将内容写入数据库或文本文件.它不输出任何东西,不需要比网址更多的输入.

我的问题是我找不到如何获得活动子进程数的东西.我是一个新手程序员,所以每个提示和建议都是受欢迎的.我还想知道如果加载了20个子进程,while循环再次检查条件,我怎么能管理它?我想过可能会在它上面放一个while循环,比如说

while i<100000
   while number_of_subproccesses < 20:
       subprocess.Popen(['python', 'script.py', urllist[i]]
       i = i+1
       if number_of_subprocesses == 20:
           sleep() # wait to some time until check again
Run Code Online (Sandbox Code Playgroud)

或者也许还有一种可能性,即while循环总是检查子进程的数量?

我还考虑过使用模块多处理,但我发现只使用子处理调用script.py而不是多处理函数非常方便.

也许有人可以帮助我并引导我走向正确的方向.非常感谢!

python parallel-processing subprocess multiprocessing python-3.x

6
推荐指数
1
解决办法
2085
查看次数

使用 Selenium 实现浏览器自动化:指纹、可识别性和可追溯性?

我想使用 selenium/webdriver 来模拟浏览器并用它抓取一些网站内容。即使它不是最快的方法,对我来说它也有很多优点,例如执行脚本等。

对于许多网站,禁止通过自动方法访问它们,例如 google 或 bing 等搜索引擎。

对于一种工具,我需要从 google 抓取几个关键字的估计结果统计数据。这将如下所示:模拟浏览器访问 google.com 并输入关键字并抓取结果,然后稍作停顿后输入下一个关键字,抓取结果等等......

我的问题是:网站是否有可能识别出我正在使用 selenium 来模拟浏览器而不是手动使用浏览器?尤其是google案例,让我有些疑惑。我知道 selenium 部分是由谷歌开发的,或者至少是由一些为谷歌工作的人开发的。那么是否会为 selenium 留下一些指纹,或者是否无法决定我是自己使用浏览器还是 selenium 模拟的浏览器,即使对于谷歌也是如此?

browser-automation web-scraping selenium-webdriver

5
推荐指数
1
解决办法
8992
查看次数

读取文本文件的行并获取charmap解码错误

即时通讯使用python3.3和sqlite3数据库.我有一个大约270mb的大文本文件,我可以用Windows7中的写字板打开.

该文件中的每一行如下所示:

term\t number \n

我想读取每一行并将值保存在数据库中.我的代码如下:

f = open('sorted.de.word.unigrams', "r")
for line in f:

    #code
Run Code Online (Sandbox Code Playgroud)

我能够将所有数据读入我的数据库,但只是某一行,我建议可能是所有行的一半.然后我得到以下错误:

File "C:\projects\databtest.py", line 18, in <module>
for line in f:
File "c:\python33\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 140: character maps to   <undefined>
Run Code Online (Sandbox Code Playgroud)

我试图用encoding = utf-8打开文件,但是其他编解码器都没有用.然后我尝试通过另存为utf-8 txt文件使用写字板进行复制.但是写字板崩溃了.

这里的问题在哪里,看起来python无法处理的那一行中有一些字符.我该怎么做才能完全读取我的文件?或者是否可以忽略此类错误消息并继续下一行?

您可以在此处下载打包文件:

http://wacky.sslmit.unibo.it/lib/exe/fetch.php?media=frequency_lists:sorted.de.word.unigrams.7z

非常感谢!

python decode file text-files python-3.x

2
推荐指数
1
解决办法
1万
查看次数