我正在使用Mechanize和Beautiful汤从Delicious中删除一些数据
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
mech = Browser()
url = "http://www.delicious.com/varunsrin"
page = mech.open(url)
html = page.read()
soup = BeautifulSoup(html)
print soup.prettify()
Run Code Online (Sandbox Code Playgroud)
这适用于我抛出它的大多数网站,但是使用以下输出在Delicious上失败
Traceback (most recent call last):
File "C:\Users\Varun\Desktop\Python-3.py",
line 7, in <module>
page = mech.open(url)
File "C:\Python26\lib\site-packages\mechanize\_mechanize.py",
line 203, in open
return self._mech_open(url, data, timeout=timeout) File
"C:\Python26\lib\site-packages\mechanize\_mechanize.py",
line 255, in _mech_open
raise response httperror_seek_wrapper: HTTP Error
403: request disallowed by robots.txt
C:\Program Files (x86)\ActiveState Komodo IDE 6\lib\support\dbgp\pythonlib\dbgp\client.py:1360:
DeprecationWarning:
BaseException.message has been deprecated as of …Run Code Online (Sandbox Code Playgroud) 我刚刚完成了我的第一个python脚本,一个来自philipines的选举数据的刮刀.我没有编程背景,我已经使用stata进行统计分析,最近在R中考虑了一点,因为我想在某些时候切换.但我想学习python从网站和其他来源提取数据.到目前为止,我只浏览了python教程,O'Reilly的"学习Python"正在等待我的架子.我从其他人的脚本中获取灵感并浏览包含的包文档,编写了以下脚本.
我基本上寻找的是一般建议.该脚本确实有效,但是有多余的部分吗?我应该采用不同的结构吗?是否有任何典型的(或简单的愚蠢)初学者错误?
我自己编写了一些问题,我在脚本之后列出了这些问题.
import mechanize
import lxml.html
import csv
site = "http://www.comelec.gov.ph/results/2004natl/2004electionresults_local.aspx"
br = mechanize.Browser()
response = br.open(site)
output = csv.writer(file(r'output.csv','wb'))
br.select_form(name="ctl00")
provinces = br.possible_items("provlist")
for prov in provinces:
br.select_form(name="ctl00")
br["provlist"] = [prov]
response = br.submit()
br.select_form(name="ctl00")
pname = str(br.get_value_by_label("provlist")).strip("[]")
municipalities = br.possible_items("munlist")
for mun in municipalities:
br.select_form(name="ctl00")
br["munlist"] = [mun]
response = br.submit(type="submit", name="ctl01")
html = response.read()
root = lxml.html.fromstring(html)
try:
table = root.get_element_by_id(id="dlistCandidates")
data = [
[td.text_content().strip() for td in row.findall("td")]
for row in table.findall('tr')
]
except KeyError: …Run Code Online (Sandbox Code Playgroud) 我试过安装WWW :: Mechanize模块
'cpan WWW::Mechanize'
Run Code Online (Sandbox Code Playgroud)
我在'使用WWW :: Mechanize'行中没有出现任何错误,这意味着它找到了文件,但在尝试使用以下方法实例化它时:
$m = WWW::Mechanize->new();
Run Code Online (Sandbox Code Playgroud)
我遇到以下问题:
无法在@INC中找到HTTP/Config.pm(@INC包含:/ Library/Perl/Updates/5.10.0/darwin- thread-multi-2level /Library/Perl/Updates/5.10.0/System/Library/ Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0/Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0/Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi- 2level /System/Library/Perl/Extras/5.10.0.)at /Library/Perl/5.10.0/LWP/UserAgent.pm第746行.
我不确定发生了什么.我觉得我有所有必要的依赖项,但我似乎无法找到这个特定错误的含义.
除了前面提到的行和之外,我的脚本是空的
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
有没有人碰到这个?
我想建立一个网络刮板.目前,我正在学习Python.这是非常基础!
Python代码
import urllib.request
import re
htmlfile = urllib.request.urlopen("http://basketball.realgm.com/")
htmltext = htmlfile.read()
title = re.findall('<title>(.*)</title>', htmltext)
print (htmltext)
Run Code Online (Sandbox Code Playgroud)
错误:
File "C:\Python33\lib\re.py", line 201, in findall
return _compile(pattern, flags).findall(string)
TypeError: can't use a string pattern on a bytes-like object
Run Code Online (Sandbox Code Playgroud) 我怎样才能继续在 #document 中寻找元素:
<div>
<iframe>
#document
<html>
<body>
<div>
Element I want to find
</div>
</body>
</html>
</iframe>
</div>
Run Code Online (Sandbox Code Playgroud) 以下:scrapy的教程我做了一个简单的图像爬虫(刮掉Bugattis的图像).这在下面的实施例中说明.
但是,按照指南给我留下了一个不起作用的爬虫!它找到所有网址,但不下载图片.
我找到了一个鸭子胶带解决方案:替换ITEM_PIPELINES等等IMAGES_STORE;
ITEM_PIPELINES['scrapy.pipeline.images.FilesPipeline'] = 1 和
IMAGES_STORE - > FILES_STORE
但我不知道为什么会这样呢?我想使用scrapy记录的ImagePipeline.
例
settings.py
BOT_NAME = 'imagespider'
SPIDER_MODULES = ['imagespider.spiders']
NEWSPIDER_MODULE = 'imagespider.spiders'
ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = "/home/user/Desktop/imagespider/output"
Run Code Online (Sandbox Code Playgroud)
items.py
import scrapy
class ImageItem(scrapy.Item):
file_urls = scrapy.Field()
files = scrapy.Field()
Run Code Online (Sandbox Code Playgroud)
imagespider.py
from imagespider.items import ImageItem
import scrapy
class ImageSpider(scrapy.Spider):
name = "imagespider"
start_urls = (
"https://www.find.com/search=bugatti+veyron",
)
def parse(self, response):
for elem in response.xpath("//img"):
img_url = elem.xpath("@src").extract_first()
yield ImageItem(file_urls=[img_url])
Run Code Online (Sandbox Code Playgroud) 你们曾经看到FB在你将它粘贴在链接字段中并且显示各种元数据,图像的拇指,来自页面链接的各种图像或者来自视频相关链接的视频拇指(如youtube).
任何想法如何复制这个功能?我正在考虑几个齿轮工人甚至更好的只是javascript做xhr请求并根据正则表达式或类似的东西解析内容......任何想法?任何链接?有人已经尝试过这样做并把它包装在一个很好的课程中吗?什么?:)
谢谢!
请帮忙!:(
我正在寻找开发PHP脚本来执行以下操作:
有人可以帮忙吗?
感谢并感谢您最快的反馈.
我正在开发一个 Ruby/Rails 应用程序,它可以抓取另一个网站并使用数据呈现 RSS 提要。
因为这个应用程序是在 Heroku 上构建的,所以我通过控制器生成 RSS 提要,而不是将它转储到文件系统并将其作为资产提供。
但是,当我设置render :content_type哈希时,没有任何效果。响应的内容类型仍然是text/plain。
news对FeedController 的操作
def news
do_scrape
@posts = UbuEntry.all(:order => "created_at DESC", :limit => 400)
render :layout => false, :content_type => Mime::RSS
end
Run Code Online (Sandbox Code Playgroud)
完整路线.rb
UbuWebRSS::Application.routes.draw do
root :to => 'index#index'
scope :format => true, :constraints => { :format => 'rss' } do
get 'feed/news' => 'feed#news'
end
end
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看实时结果:
http://www.ubuwebrss.com/feed/news.rss
以及完整的源代码:
https://github.com/freen/ubuwebrss/
我在 Google 和 StackOverflow 上环顾四周,但不清楚我做错了什么。
有小费吗?谢谢!
供参考:
视图脚本:/app/views/feed/news.rss.builder: …
我一直在考虑让我的web scraper多线程,而不是像普通的线程(例如,线程scrape =新的线程(函数);)但是像线程池这样的东西可以有很多线程.
我的刮刀通过使用for循环来刮擦页面.
for (int i = (int)pagesMin.Value; i <= (int)pagesMax.Value; i++)
Run Code Online (Sandbox Code Playgroud)
那么我怎么能用线程池这样的多线程函数(包含循环)多线程?我以前从未使用过线程池,我见过的例子对我来说很混乱或模糊.
我已经将我的循环修改为:
int min = (int)pagesMin.Value;
int max = (int)pagesMax.Value;
ParallelOptions pOptions = new ParallelOptions();
pOptions.MaxDegreeOfParallelism = Properties.Settings.Default.Threads;
Parallel.For(min, max, pOptions, i =>{
//Scraping
});
Run Code Online (Sandbox Code Playgroud)
会有用还是我弄错了?