Giter VIP home page Giter VIP logo

crawlers's Introduction

POPONG Crawlers

Just some minor web crawlers.
Pull requests are always welcome.

License

Affero GPL v3.0

  • Required: License and copyright notice + State Changes + Disclose Source
  • Permitted: Commercial Use + Modification + Distribution
  • Forbidden: Hold Liable + Sublicensing

Descriptions

Production

bills

Get bill data from the National Assembly and structurize to json formats. (See attributes)

pip install -U celery-with-redis    # Install dependencies
cd bills
cp settings.py.sample settings.py   # Input data directory
python main.py

commentable_bills

Get commentable bills from 국회입법예고

cd commentable_bills
python crawl.py     # open and set datadir first

committee_list

Get committee list data from the 위원회 현황

cd committee_list
python get.py       # To get data files

election_commission

Get Korean politicians' data from Korea Election Commission (중앙선거관리위원회).
This data contains the list of all people that have run for office in the National Asssmbly.

cd election_commission
python main.py -h

glossary

Get and merge data for POPONG Glossary from:
committee: Standing committee and Special Committee (국회상임위원회 및 특별위원회),
likms: Integrated Legislation Knowledge Management System (입법통합지식관리시스템),
nas: National Assembly Secretaritat (국회사무처).

python get.py       # To get source data files
python merge.py     # To create glossary.csv

google

Get Google search counts.

cd google
python ndocs.py

meetings

Get National Assembly meetings.

cd meetings
python crawl.py

meetings_calendar

Get National Assembly meetings calendar.

cd meetings_calendar
python get.py 2014-11-01 2014-11-11     # To get meetings schedule from 2014-11-01 to 2014-11-11 or 
python get.py 2014-11-01                # To get meetings schedule at 2014-11-01

national_assembly

Get member information from the Korean National Assembly.

pip install Scrapy>=0.22.2
cd national_assembly
python crawl.py

naver_news

Get news articles for recent bills from Naver News.

pip install psycopg2 lxml
cd naver_news
cp settings.py.sample settings.py
vi settings.py                      # fill in values
python crawl.py

peoplepower

Get People Power 21 (열려라국회) webpages. (Currently broken)

cd peoplepower
scrapy crawl peoplepower21

pledges

Get pledges from NEC (선거관리위원회) for 19th National Assembly officials.

cd pledges
python crawler.py

rokps

Get Korean politicians' data from ROKPS(헌정회).

cd rokps
python crawler.py
python parser.py

wikipedia

Get Korean lastnames from Wikipedia.

cd wikipedia
python wiki_lastnames.py

Get Wikipedia links for assembly members.

cd wikipedia
python assembly_members.py

Metrics

twitter

Get Twitter follower lists for specified handles.

make twitter_setup
python twitter/followers.py

crawlers's People

Contributors

cornchz avatar dongx3 avatar e9t avatar hunkim avatar lexifdev avatar majorika avatar sanxiyn avatar stray-leone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crawlers's Issues

bills 실행 시 오류

bills 모듈이 현재 커밋 되어 있는 상태로 동작되는 것이 맞나요?
README 있는 순서대로 실행했을 때, ascii 관련 인코딩 오류가 나고 있는 상태입니다.

Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/Users/majorika/dev/crawlers/bills/meta/html.py", line 47, in get_page
    f.write(doc)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 182-183: ordinal not in range(128)
<Greenlet at 0x102a5bf50: get_page('http://likms.assembly.go.kr/bill/jsp/BillSearchRe, 18, './sources/list/17', 172)> failed with UnicodeEncodeError

Failed to get ... ConnectionError object

Crawler 돌리다가 이런 에러가 많이 보이는데 일단 Total 18119 bills, 363 pages to ./sources/list/19 정보는 받아 오는 것으로 봐서 제 서버를 막은 것은 아닌것 같은데 왜 그런 것일까요?

그리고 이렇게 fail 할경우 retry해서 해당 파일을 받아 오나요? 아님 그 리스트에 있는 bill들은 무시 되나요?

Failed to get ./sources/list/19/26.html due to <method-wrapper '__repr__' of ConnectionError object at 0x7f324f059e88>

Failed to get ./sources/list/19/28.html due to <method-wrapper '__repr__' of ConnectionError object at 0x7f324f0598d8>

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28690575-failed-to-get-connectionerror-object?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

의안 일부 DB에 누락

지금 구현체는 누락된 의안은 update도 하지 않기 때문에 -_-;; 복구되지 않는당...
1907630~1907632 비어있음

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1671334-db?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

최근 의사일정 가져오기

회의록은 바로바로 업데이트 되지 않아서 (약 1주일 소요되는듯),
회의록이 업데이트되지 않은 지난 회의에 대한 정보가 필요.

http://www.assembly.go.kr/renew10/anc/schedule/assm/assemact/council/council0101/assmSchCal/assemSchCal.do

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/2414563-?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

20대 국회에 대한 크롤링

20대 국회가 개원한지도 1년이 넘었으나, 크롤은 안되고 있습니다.
크롤러 각 모듈(?)마다 20대 국회까지 크롤하도록 코드 수정이 필요합니다.

eg. 의안 크롤러의 main.py에 대한 풀리퀘
#43

20대 총선 후보자, 당선자 등등에 대한 크롤러도 수정하려 하는대, 코드 수정이 필요한 모듈/코드가 어느 것들일까요?


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

특정 의안 정보가 존재하지 않음..

리포팅 온 건 일단 이렇게 두개..
http://likms.assembly.go.kr/bill/jsp/BillDetail.jsp?bill_id=PRC_P1O4P1M2A0V2K1A4B2Y8G3B7X6S0P1
http://likms.assembly.go.kr/bill/jsp/BillDetail.jsp?bill_id=PRC_R1Z5M0O6M0Y8J1J3Y4Y8Y2G7R6J6X5

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/29080065-?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

incremental update?

만들어주신 툴 잘 사용하고 있습니다. 자료가 엄청나다 보니 툴을 돌리면 시간이 오래 걸리는데 새로운 데이터나 업데이트 된 데이터만 받아오는 기능이 있나요?

그렇게 되면 crontab등에 걸어 놓고 돌릴수 있어서 매우 좋을것 같습니다.

좋은툴 공개 감사합니다.

대안 의안의 원안 의안 데이터 가져오기

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5530108-?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

의안 발의자 parser 업데이트

2014년 3월 25일에 국회 의안정보시스템에서 의안 발의자를 unique하게 구분할 수 있게 업데이트 되어서, 이에 맞게 크롤러 업데이트 필요.

단, 18대 이하 국회에는 적용되지 않고 19대 국회 이후부터 적용됨.

  1. 18대 국회까지 의안 발의자 페이지
    screenshot from 2014-04-28 18 49 14
    http://pokr.kr/bill/1814665
  2. 19대 국회부터 의안 발의자 페이지
    screenshot from 2014-04-28 18 46 56
    http://pokr.kr/bill/1907973

의안번호 'DDxxxxx'

그럼 이 DD 의안들은 뭘까... 정상적인 의안은 아닌 거 같고,
혹시 정식으로 업로드되기 전의 draft같은 건데, 잠깐 올라온 사이에 우리가 긁은 건가?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5996995-ddxxxxx?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

[Exception] [0] 해당 의안 정보가 존재하지 않습니다.

일부 법안에 대해 다음과 같은 에러가 나는데. CSV목록에는 있는데 법안 detail은 정보가 없다고 나옵니다.

http://likms.assembly.go.kr/bill/jsp/BillDetail.jsp?bill_id=PRC_E1O4I0W4F2D5L1G0D3S6M3N5V3X3Q4

image

이런경우 현재 html2json에서는 IndexError exception을 내는데 따로 처리 해주는 것이 좋지 않을까요?

Traceback (most recent call last):
  File "safe.py", line 68, in safe_get_parse_page
    safe_parse_page(assembly_id, bill_id, metacsv);
  File "safe.py", line 40, in safe_parse_page
    specific.parse_page(assembly_id, bill_id, meta, jsondir);
  File "/home/ubuntu/crawlers/bills/specific/html2json.py", line 242, in parse_page
    d = extract_specifics(assembly_id, bill_id, meta)
  File "/home/ubuntu/crawlers/bills/specific/html2json.py", line 166, in extract_specifics
    table       = utils.get_elems(page, X['spec_table'])[1]
IndexError: list index out of range

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28805653-exception-0?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

Bill 1900145 Parsing Error Due to Crawling Error

html2json에 을 돌리다 에러가 나서 뭔일인가 보니

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/home/ubuntu/crawlers/bills/specific/html2json.py", line 242, in parse_page
    d = extract_specifics(assembly_id, bill_id, meta)
  File "/home/ubuntu/crawlers/bills/specific/html2json.py", line 166, in extract_specifics
    table       = utils.get_elems(page, X['spec_table'])[1]
IndexError: list index out of range
<Greenlet at 0x7f27e79417d0: parse_page(19, '1900145',        bill_id  status                            , u'./json/19')> failed with IndexError

sources/specifics/19/1900145.html 파일을 받을때 오류가 발생한것 같습니다.

^M
^M
^M
<SCRIPT LANGUAGE="javascript">^M
<!--^M
        function onLoad() {^M
                alert(document.all["MSG"].innerText);^M
        }^M
-->^M
</SCRIPT>^M
^M
^M
^M
<HTML>^M
<BODY ONLOAD="javascript:onLoad()">^M
        <TEXTAREA ID="MSG" STYLE="display:none">[SQLException] Code[24757] Msg[ORA-24757: Æ®·£Àè¼Ç ½Äº°ÀÚ°¡ Áߺ¹µÇ¾ú½À´Ï´Ù
ORA-02063: line°¡ ¼±ÇàµÊ (NALAW_LINK·Î ºÎÅÍ)
][µ¥ÀÌÅͺ£À̽º ¿À·ù]</TEXTAREA> ^M
</BODY>^M
</HTML>

이런 경우 어떻게 하면 될까요? SQL Exception이 나왔는데 이런경우 crawler에서 다시 받아 오기 기능이 필요할듯 합니다.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

약력 parsing시 angle bracket 컨텐츠 포함시키기

  • 가령, 강석훈 의원 페이지의 약력 중 "<학력>", "<경력>"은 데이터에 저장되지 않고 있음
  • 파서가 angle bracket 안에 있는 내용을 모두 HTML 태그로 인식해서 건너뛰는 것으로 추정됨

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1669769-parsing-angle-bracket?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

meetings 크롤러 결과 파일 인코딩 문제

개발 환경이 달라서 그런 것인지는 모르겠지만, 페이지를 utf-8로 변경해서 파싱하고 있는 상태인데도 인코딩 문제가 발생합니다. (아래 참조)

제19대국회-제329회 -제1차-기�재정위�회 [예산결산기금심사소위�회].pdf

return r.text.encode('utf-8') 

코드를 아래로 변경하면 정상 작동합니다.

return unicode(r.text.encode('utf-8'), 'utf-8')

수정 코드는 pull request하겠습니다.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/6335100-meetings?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

Safe crawling?

제 생각에는 crawling과 parsing을 조금 reliable하게 refactoring 해보면 어떨까요?

  1. 지금 crawling과 parsing이 나누어져 있는데 법안 하나를 crawl하고 이를 parsing하면 어떨까요? 그러면 서버에 hit 하는 시간을 줄여주어 서버 부하를 적게할것 같습니다.
  2. get_html 에 try/catch를 걸어 500서버에러나 connection 에러나, 본문중 SQL Exception이 있으면 1초 쉬었다가 3번 정도 retry 해본다음 die.
  3. 위 2번에서 받아온 html을 parsing해보고 문제가 있으면 2번을 다시 수행하고 파싱. 이 과정도 3번정도 해보고 안되면 die 하면 어떨까요?

2 나 3에서 die가 되면 전체 업데이트가 안되겠지만, 전체 업데이트가 안되는 것이 일부 법안이 누락된 정보를 보여주는 것보다 좋지 않을까 생각됩니다. 2, 3번 에러가 지속된다면 뭔가 대책이 필요하겠죠? ^^

그냥 생각나서 적어 보았습니다. 감사합니다.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28770142-safe-crawling?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

http keep-alive

HTTP 1.1 부터 나온 keep-alive 옵션은 연결을 끊지않고 여러번의 request가 가능하기 때문에 crawler 의 성능을 서버에 추가 부하를 주지 않고 매우 향샹 시킵니다. Python의 경우 그냥 requests.Session을 만들어 주고 이를 다시 사용하면 자동으로 Keep-alive하거나 연결이 끊어진 경우 다시 연결합니다.

아래 참조:
http://docs.python-requests.org/en/latest/user/advanced/

Update National Assembly crawler due to webpage renewal

The previous crawler is broken due to National Assembly's webpage renewal. Update it.

Input

  1. 현재 국회의원 목록
  2. 각 국회의원 정보

    위 링크에서 각 member의 이름에 hover하면 javascript:jsMemPop(*someNumber*)와 같은 링크가 뜨는데, 괄호 안 번호가 의원의 국회 시스템 내 id임. 그 id를 아래 링크에 넣어가며 페이지를 추출 받으면 됨.
    http://www.assembly.go.kr/assm/memPop/memPopup.do?num=*someNumber*

Output

  1. 데이터 출력 형태: csv + json
    • 기존에는 csv만 남겼는데, diff를 보기 위해 json 형태로도 남기기로.
    • Attribute는 기존 데이터 파일 참고
  2. README update

1-19대 회의록 크롤링/파싱/퍼블리싱

애초에 개발된 회의록 online 크롤러는 2013년 11월 이후 의안에 대해서만 작동함.
그 이전 회의록을 긁어오기 위해서는 별도의 크롤러 필요.

https://github.com/teampopong/crawlers/blob/master/meetings/batch.py

작업 진행상황

크롤링

  • 본회의 (19대)
  • 본회의 (1-18대)
  • 상임위원회 (19대)
  • 상임위원회 (1-18대)
  • 특별위원회
  • 예산결산특별위원회
  • 국정감사
  • 국정조사
  • 전원위원회
  • 소위원회

파싱/퍼블리싱

  • 본회의 (19대)
  • 본회의 (1-18대)
  • 상임위원회 (19대)
  • 상임위원회 (1-18대)
  • 특별위원회
  • 예산결산특별위원회
  • 국정감사
  • 국정조사
  • 전원위원회
  • 소위원회

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/4948726-1-19?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

위원회 명단 크롤러에 병합된 결과물 추가

@majorika 님께서 기여해주신 committee_list 크롤러에 병합된 결과물 추가하기.

  • 현황: 결과물이 sources 폴더 안에 아래와 같은 파일들이 생성됨.
committee_list_군 인권개선 및 병영문화혁신 특별위원회.csv
committee_list_남북관계 및 교류협력 발전 특별위원회.csv
committee_list_정보위원회.csv
committee_list_국방위원회.csv
committee_list_정무위원회.csv
committee_list_지방자치발전 특별위원회.csv
committee_list_지속가능발전 특별위원회.csv
committee_list_국민안전혁신 특별위원회.csv
committee_list_평창동계올림픽 및 국제경기대회지원 특별위원회.csv
committee_list_창조경제활성화 특별위원회.csv
committee_list_법제사법위원회.csv
committee_list_외교통일위원회.csv
committee_list_안전행정위원회.csv
committee_list_국회운영위원회.csv
committee_list_기획재정위원회.csv
committee_list_국토교통위원회.csv
committee_list_윤리특별위원회.csv
committee_list_보건복지위원회.csv
committee_list_환경노동위원회.csv
committee_list_여성가족위원회.csv
committee_list_동북아역사왜곡대책 특별위원회.csv
committee_list_산업통상자원위원회.csv
committee_list_예산결산특별위원회.csv
committee_list_교육문화체육관광위원회.csv
committee_list_미래창조과학방송통신위원회.csv
committee_list_농림축산식품해양수산위원회.csv
  • 제안: sources 폴더 안의 파일들을 전부 병합한 committee_list.csv를 생성. committee_list.csv에는 committee라는 column이 추가되고, 여기에는 기존 파일명에 있는 위원회명이 기입됨.

Bill: withdrawers 와 proposers의 형식이 다름

 "proposers": [
    {
      "name_kr": "\uac15\uae30\uc724",
      "party": "\uc0c8\ub204\ub9ac\ub2f9",
      "name_cn": "\u59dc\u8d77\u6f64"
    },

"withdrawers": [
    "\uac15\uae30\uc724(\uc0c8\ub204\ub9ac\ub2f9/\u59dc\u8d77\u6f64)",

같은 의원들 대상인데 표현 방식이 다르네요. 같은 방식으면 좋을듯 합니다.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28665312-bill-withdrawers-proposers?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

공동발의자와 찬성의원이 구분이 안 되는 문제

  1. 일반적인 의원 발의 의안
    • 제안자의 표기: 대표발의자n(공동발의자)
    • 예시: "이명수의원 등 12인"
  2. 특정 의안
    • 제안자 표기: 공동발의자n(찬성의원)
    • 예시: "최경환의원ㆍ전병헌의원 외 279인"

위의 1, 2번이 어떻게 다른 경우인지 파악하고, 의안 크롤러를 수정해야 함.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5530109-?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

의안의 부가정보 수집하기

screen shot 2015-12-03 at 7 31 30 pm

[image source]

지금은 의안 크롤러가 의안의 "부가정보"를 수집하지 않고 있는데, 대안 의안들의 경우 이 영역에 관련 의안이 표기되어 있기 때문에 무척 중요한 정보를 놓치고 있는 꼴입니다. 이 데이터를 추가적으로 수집하기 위해서는 html을 json으로 파싱하는 파일을 수정하면 됩니다.

  • 현재

    for i, r in enumerate(elem_row_contents):
        if row_titles[i]!='부가정보':  # "부가정보" 외의 다른 영역(행)들 처리
            status_dict[row_titles[i]] = extract_row_contents(r)
        else:  # "부가정보" 영역 처리
            t = r.xpath('span[@class="text8"]/text()')
            c = filter(None, (t.strip() for t in r.xpath('text()')))
            status_dict[row_titles[i]] = dict(zip(t, c))
  • 개선: 아마 위의 코드 snippet에서 "부가정보" 영역을 처리하는 곳에서 xpath가 정상적으로 작동하지 않는 것 같습니다. 디버깅하는 것이 아마 크게 어려운 일은 아닐 것 같은데, html 파일을 다시 찬찬히 뜯어보는 노력이 필요합니다.

혹시 xpath의 사용법에 익숙하지 않으신 분들이 있다면 다음 링크를 확인해주시기 바랍니다: http://www.slideshare.net/lucypark/the-beginners-guide-to-54279917/49

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28812970-?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F248104&utm_medium=issues&utm_source=github).

Fix meeting crawler

Broken since Aug 12, 2014.

2014. 09. 06. (토) 05:00:01 KST
update assembly minutes
1
Traceback (most recent call last):
  File "./crawl.py", line 131, in 
    print page_num; parse_page(page_num, attrs)
  File "./crawl.py", line 123, in parse_page
    data = parse_row(row, attrs)
  File "./crawl.py", line 102, in parse_row
    parse_issues(row)
  File "./crawl.py", line 68, in parse_issues
    row['issues_url'] = get_hidden_url(issues_url)
  File "./crawl.py", line 27, in get_hidden_url
    f = get.htmltree(url.encode('utf-8'))
  File "/popong/crawlers/meetings/get.py", line 21, in htmltree
    f = urllib2.urlopen(r)
  File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 410, in open 
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 400: Bad Request

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.